首页 > 其他 > 详细

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

时间:2014-03-03 15:52:56      阅读:739      评论:0      收藏:0      [点我收藏+]

示例代码如下:

bubuko.com,布布扣
 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; }
        }
    }
bubuko.com,布布扣

调用如下:

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

//编译错误

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

解决方法:

方法一:

把struct替换成class

方法二:

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

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

参考文章:

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 Container
 
C#: List of struct
bubuko.com,布布扣bubuko.com,布布扣

 


作者:曾是土木人http://www.cnblogs.com/hongfei

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

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

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

原文:http://www.cnblogs.com/hongfei/p/3577052.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!