C#无法修改“List<T>.this[int]“的返回值,因为它不是变量
C#无法修改"List.this[int]"的返回值,因为它不是变量
问题分析:
存放类的List可以直接给元素内的对象赋值,但存放结构体的List无法直接给元素内的对象赋值
在List中使用"."获取对象的时候,如果List内的元素是struct结构体,那么它就是一个值传递类型; 如果是class,它就是一个引用类型,它传递的是对象的地址。值传递,它返回的是一个临时拷贝,是无法更改本身的值的,所以会报错。
问题解决:
public struct TestPoint
{public int id { get; set; }public double x { get; set; }public double y { get; set; }public int Seq { get; set; }
}List<TestPoint> vTestPointList = new List<TestPoint>();//我new了一个自定义<TestPoint>的列表
for (int i = 0; i < vTestPointsList.Count; i++)
{vTestPointsList[i].Seq = 0;//我想把vTestPointsList内所有Seq的值赋为0//这个时候会提示我无法修改"List<TestPoint>.this[int]"的返回值,因为它不是变量
}//如果我非得在struct结构体下进行值传递应该怎么办呢,例如某些情况下和C++的封送
//解决办法:引入第三方变量
List<TestPoint> vTestPointList = new List<TestPoint>();
for (int i = 0; i < vTestPointsList.Count; i++)
{var tp= vTestPointsList[i];//引入第三方tp,令tp=vTestPointsList的第i个元素tp.Seq = 0;//令tp的Seq为零vTestPointsList[i] = tp;//用Seq为0后的tp替换//可以理解为,我想改变A的某个值,但是没办法改变,那么我引入B作为中介,改变B对应的值,把B完全替换A
}
C#无法修改“List<T>.this[int]“的返回值,因为它不是变量相关推荐
- 数据库操作update,和insert为什么会有int的返回值
解答: 关注 更多免费教学文章请关注这里 update和insert的返回值int是对sql中该sql语句影响的行数,比如你插入一条数据,成功的话sql会提示1行代码收影响,返回的int是1
- println()函数输出int类型返回值错误的问题
out.println(); 在用这个语句输出其他类返回大的int类型的数据的时候,注意输出错误. 例如: out.println(class1.方法()): 导致错误: our.println(c ...
- C语言中fgetc函数返回值为什么是int?
学习C语言的,文件操作,大都会用到它. 它的函数原型: 这个函数的返回值,是返回读取的一个字节.如果读到文件末尾返回EOF. EOF其实就是一个宏 #define EOF (-1) 表示-1. 既然返 ...
- mysql修改表中某个字段的默认值
Mysql中用SQL增加.删除字段,修改字段名.字段类型.注释,调整字段顺序总结 在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或 ...
- AOP开发——在不修改源代码的前提下,对类里面的方法进行增强 : 前置 后置 环绕 异常||如何得到目标方法的参数和返回值
AOP开发 @Transactionl 在不修改源代码的前提下,对类里面的方法进行增强 前置 后置 环绕 异常 创建项目前引入aop的包 <dependency> <grou ...
- struts 修改拦截器修改返回值_关于struts2简单的介绍与示例
Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构.它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构. 缘起于Apache St ...
- C# struct的陷阱:无法修改“...”的返回值,因为它不是变量
Cannot modify the return value of 'expression' because it is not a variable 无法修改"expression&quo ...
- Spring/SpringBoot 过滤器修改、获取http 请求request中的参数 和 response返回值,比如修改请求体和响应体的字符编码
通过自定义filter,RequestWrapper,ResponseWrapper 处理请求和响应数据,比如修改请求体和响应体的字符编码 1.request 和 response 中的数据都是 存在 ...
- Java中int的取值范围
先上代码,通过下面代码的执行结果观察 public class Test {public static void main(String[] args) {// 2的31次方int j = (int) ...
最新文章
- vue引入图片路径的三种主要方法
- OpenStack入门修炼之实战--实现阿里云ESC多FLAT网络(21)
- boost::mp11::mp_any_of相关用法的测试程序
- Apache Camel –从头开始开发应用程序(第1部分/第2部分)
- C++(STL):30 ---关联式容器map的operator[]和insert效率对比
- windows10双系统安装ubuntu18.04
- 做箭步蹲的时候身体总是保持不了平衡,动作要领是什么?
- HDFS的java API操作(基于Windows平台的Eclipse)
- IT书籍汇总下载(python_c++_java_android_网络安全)等-持续更新
- 科研绘图软件GraphPad Prism教程(三)
- 微信小程序分享页面,分享到朋友圈
- 采用动态规划思维求解数塔问题,c++实现
- Qt 之打开系统文件管理器
- 手机传感器的意义:未来生活将被彻底改变
- 承德医学院计算机信息,研究生院 信息发布
- 想教小学计算机面试报哪个,小学教师资格证面试,建不建议考信息技术?
- 186、项目超过255个摄像机怎么分配IP地址
- 如何用 Python 做自动化测试
- 云南计算机专修学校附中,2015昆明最强高中排行榜出炉 师大附中拿下第一
- C语言实现将一个整形数转换为两个字节16进制