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

王朝学院·作者佚名  2016-05-16
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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.cnblogs.com/hongfei)

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航