示例代码如下:

  1. public struct SpiderResult
  2. {
  3. public string robotName;
  4. public string RobotName
  5. {
  6. get { return robotName; }
  7. set { robotName = value; }
  8. }
  9. public int num;
  10. public int totalNum;
  11. }
  12. public class TestClass
  13. {
  14. public SpiderResult spider = new SpiderResult();
  15. public SpiderResult Spider
  16. {
  17. get { return spider; }
  18. set { spider = value; }
  19. }
  20. }

调用如下:

  1. public partial class Form1 : Form
  2. {
  3. public Form1()
  4. {
  5. TestClass testclass = new TestClass();
  6. testclass.Spider.RobotName = "Baidu";//编译出错
  7. }
  8. }

//编译错误

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

解决方法:

方法一:

把struct替换成class

方法二:

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

  1. public partial class Form1 : Form
  2. {
  3. public Form1()
  4. {
  5. TestClass testclass = new TestClass();
  6. SpiderResult tempSpider = new SpiderResult();
  7. tempSpider.robotName = "Baidu";
  8. testclass.Spider = tempSpider;
  9. }
  10. }

参考文章:

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


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

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

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

  1. 逆向工程之修改关键CALL返回值_破解视频转换专家

    1)注册软件随便输入注册名注册码 2)进入软件根目录,发送到PEID查壳 3)发现无壳 4)发送到OD 4.1)右键菜单选择智能搜索 4.2)找到关键信息点注册 4.3)找到关键信息点双击进入汇编,向 ...

  2. FiddlerScript修改特定请求参数下的返回值

    使用场景: api/Live/GetLiveList接口: (1)Type为1,接口返回直播列表 (2)Type为2,接口返回回放列表 现在想修改直播列表的返回值 思路: 利用FiddlerScrip ...

  3. Spring Aop 修改目标方法参数和返回值

    一.新建注解 @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Document ...

  4. 修改npm安装的全局路径和配置环境变量的坑

    修改npm安装的全局路径和配置环境变量的坑 转自:http://www.qdfuns.com/notes/30749/0f66fcf5e62eed010f744d0d4adaa870.html 我之前 ...

  5. SubSonic3.0使用存储过程查询时,不能使用output参数返回值的问题修改

    有个群友问SubSonic3.0执行存储过程时能不能使用output参数返回值,说测试过后获取不到返回值,早上有些时间所以就尝试修改了一下 首先在数据库中创建一个存储过程 CREATE PROCEDU ...

  6. EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态

    本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...

  7. 修改一个CGRect的值

    // 1. 用一个临时变量保存返回值. CGRect temp = self.view.frame; // 2. 给这个变量赋值. temp.size.width = kWIDTH; // 3. 修改 ...

  8. 关于readdir返回值中struct dirent.d_type的取值有关问题(转)

    关于readdir返回值中struct dirent.d_type的取值问题 原网页链接 http://www.gnu.org/software/libc/manual/html_node/Direc ...

  9. Asp.net使用代码修改配置文件的节点值

    使用代码修改配置文件的方法: 1.打开配置文件写入的权限 2.先按节点名称长到要修改的节点,然后删除,紧接着将有新值的节点添加回去 3.关闭配置文件写入的权限 修改Appsetting节点的值,修改其 ...

随机推荐

  1. 简单的dialog,类似alert弹框

    function alertPop(content){ $.dialog({ title:"提示", width:400, height:100, padding:'5px', c ...

  2. 添加网络ADB的方法(含以太网和无线)

    将下面代码添加至packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java 结合之前的添加wifi adb的博客 ...

  3. highcharts x轴中文刻度太长换行

    xAxis: { type: 'category', title:null, gridLineWidth: 1, lineColor: "#50ae93", labels: { s ...

  4. MyGeneration使用概述

    1.首先要连接数据库,第一次启动myG的时候会弹出default settings对话框,以后也可以在Edit-default settings里面修改.default settings有3个tabs ...

  5. (转)类(class)和结构(struct)的区别是什么?它们对性能有影响吗?.NET BCL里有哪些是类(结构),为什么它们不是结构(类)?在自定义类型时,您如何选择是类还是结构?

    转自:http://blog.csdn.net/lingxyd_0/article/details/8695747 类(class)和结构(struct)的区别是什么?它们对性能有影响吗?.NET B ...

  6. Codeforces821B Okabe and Banana Trees 2017-06-28 15:18 25人阅读 评论(0) 收藏

    B. Okabe and Banana Trees time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  7. browsersync

    以后不需要F5了 之前实现自动刷新,是通过livereload,它需要插件比较麻烦:现在改为browsersync. BrowserSync,迅捷从免F5开始 完整选项 不止是自动刷新:默认就有 UI ...

  8. spring 框架整合mybatis的源码分析

    问题:spring 在整合mybatis的时候,我们是看不见sqlSessionFactory,和sqlsession(sqlsessionTemplate 就是sqlsession的具体实现)的,这 ...

  9. Advice from an Old Programmer

    You’ve finished this book and have decided to continue with programming. Maybe it will be a career f ...

  10. iOS笔记之UIKit_UITextField

    - (void)viewDidLoad { [super viewDidLoad]; //建立在你已经遵守了<协议UITextFieldDelegate> self.numTF.deleg ...