首页 > 学院 > 开发设计 > 正文

C#:struct的陷阱:无法修改“xxx”的返回值,因为它不是变量

2019-11-17 03:19:41
字体:
来源:转载
供稿:网友

C#:struct的陷阱:无法修改“xxx”的返回值,因为它不是变量

示例代码如下:

 public struct SpiderResult    {                public string robotName;        public string RobotName        {            get { return robotName; }            set { robotName = value; }        }        public int num;        public int totalNum;    }    public class TestClass    {        public SpiderResult spider = new SpiderResult();        public SpiderResult Spider         {            get { return spider; }            set { spider = value; }        }    }

调用如下:

public partial class Form1 : Form    {          public Form1()        {            TestClass testclass = new TestClass();            testclass.Spider.RobotName = "Baidu";//编译出错        }}

//编译错误

错误 CS1612: 无法修改“SpiderAnalysis.TestClass.Spider”的返回值,因为它不是变量

解决方法:

方法一:

把struct替换成class

方法二:

如果非要用struct不可的话,需重新生成一个所用到的struct,即设置一个中间变量:

public partial class Form1 : Form{    public Form1()    {        TestClass testclass = new TestClass();        SpiderResult tempSpider = new SpiderResult();        tempSpider.robotName = "Baidu";        testclass.Spider = tempSpider;    }}    

参考文章:

http://blog.csdn.net/onlyou930/article/details/5568319

MSDN:Compiler Error CS1612(编译器错误 CS1612 (C#))看一下就知道了,中文的比英文原版的逊多了C# - Struct in a class.. can not access PRoperties of the struct延伸阅读:CLR Generics Limitation - Modifying Values In Situ In a ContainerC#: List of struct


作者:曾是土木人(http://www.VEVb.com/hongfei)

原文地址:http://www.VEVb.com/hongfei/p/3577052.html


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表