大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C#技巧 > C#:struct的陷阱:无法修改“xxx”的返回值,因为它

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

关键词:因为它变量返回值陷阱修改  阅读(825) 赞(17)

[摘要]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;
    }
} 


相关评论