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 Container
C#: List of struct

作者:曾是土木人(http://www.cnblogs.com/hongfei)
原文地址:http://www.cnblogs.com/hongfei/p/3577052.html
C#:struct的陷阱:无法修改“xxx”的返回值,因为它不是变量的更多相关文章
- 逆向工程之修改关键CALL返回值_破解视频转换专家
1)注册软件随便输入注册名注册码 2)进入软件根目录,发送到PEID查壳 3)发现无壳 4)发送到OD 4.1)右键菜单选择智能搜索 4.2)找到关键信息点注册 4.3)找到关键信息点双击进入汇编,向 ...
- FiddlerScript修改特定请求参数下的返回值
使用场景: api/Live/GetLiveList接口: (1)Type为1,接口返回直播列表 (2)Type为2,接口返回回放列表 现在想修改直播列表的返回值 思路: 利用FiddlerScrip ...
- Spring Aop 修改目标方法参数和返回值
一.新建注解 @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Document ...
- 修改npm安装的全局路径和配置环境变量的坑
修改npm安装的全局路径和配置环境变量的坑 转自:http://www.qdfuns.com/notes/30749/0f66fcf5e62eed010f744d0d4adaa870.html 我之前 ...
- SubSonic3.0使用存储过程查询时,不能使用output参数返回值的问题修改
有个群友问SubSonic3.0执行存储过程时能不能使用output参数返回值,说测试过后获取不到返回值,早上有些时间所以就尝试修改了一下 首先在数据库中创建一个存储过程 CREATE PROCEDU ...
- EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态
本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...
- 修改一个CGRect的值
// 1. 用一个临时变量保存返回值. CGRect temp = self.view.frame; // 2. 给这个变量赋值. temp.size.width = kWIDTH; // 3. 修改 ...
- 关于readdir返回值中struct dirent.d_type的取值有关问题(转)
关于readdir返回值中struct dirent.d_type的取值问题 原网页链接 http://www.gnu.org/software/libc/manual/html_node/Direc ...
- Asp.net使用代码修改配置文件的节点值
使用代码修改配置文件的方法: 1.打开配置文件写入的权限 2.先按节点名称长到要修改的节点,然后删除,紧接着将有新值的节点添加回去 3.关闭配置文件写入的权限 修改Appsetting节点的值,修改其 ...
随机推荐
- 线性回归,多项式回归(P2)
回归问题 回归问题包含有线性回归和多项式回归 简单来说,线性回归就是用多元一次方程拟合数据,多项式回归是用多元多次来拟合方程 在几何意义上看,线性回归拟合出的是直线,平面.多项式拟合出来的是曲线,曲面 ...
- 比较jquery中的after(),append(),appendTo()方法
html页面: <p id="myp1">我的兴趣爱好是:</p> <button id="b1">after函数</ ...
- C++ char, unsigned char, signed char
C语言中的 char, unsigned char, signed char 一.他们是什么? signed char是有符号的,但是unsigned char没有符号,两者在存储上没有任何区别都是8 ...
- 为在python中使用dotnet程序安装clr
直接在命令行中录入 pip install pythonnet 会有一个ssl错误提示 ...Could not fetch URL https://pypi.python.org/simple/py ...
- python一键升级所有第三方库
import pip from subprocess import call for dist in pip.get_installed_distributions(): call("pip ...
- Build Laravel Blog PigJian by PHP7 and Nginx on Ubuntu
Recently, I found an interesting framework Laravel written by PHP. i have never used PHP to write an ...
- 《ARM Cortex-M3权威指南》笔记(1)
http://blog.csdn.net/roverx/article/details/6624859 第1章 介绍 一.ARM Cortex‐M3处理器初探 CM3处理器内核是单片机的中央处理单元( ...
- OpenGL中的常用绘图的命令与效果(经验设置)
1. 剔除多边形表面 在三维空间中,一个多边形虽然有两个面,但我们无法看见背面的那些多边形,而一些多边形虽然是正面的,但被其他多边形所遮挡.如果将无法看见的多边形和可见的多边形同等对待,无疑会降低我们 ...
- codeforces982A
题意 给你个排列 10001 满足下列条件输出yes 否则输出no 1.不能有两个1相连 2.当点排列不能再加入1 全0判断一下 开头判断一下 结尾判断一下 #include <iost ...
- 7.css浮动与定位
外边距塌陷 解决方案: ◆给父盒子加border ◆overflow:hidden; bfc 行内元素可以定义左右的内外边距,上下会被忽略掉. 行内块可以定义内外边距. 文档流(标准流) 元素自上而下 ...