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]“的返回值,因为它不是变量相关推荐

  1. 数据库操作update,和insert为什么会有int的返回值

    解答: 关注 更多免费教学文章请关注这里 update和insert的返回值int是对sql中该sql语句影响的行数,比如你插入一条数据,成功的话sql会提示1行代码收影响,返回的int是1

  2. println()函数输出int类型返回值错误的问题

    out.println(); 在用这个语句输出其他类返回大的int类型的数据的时候,注意输出错误. 例如: out.println(class1.方法()):  导致错误: our.println(c ...

  3. C语言中fgetc函数返回值为什么是int?

    学习C语言的,文件操作,大都会用到它. 它的函数原型: 这个函数的返回值,是返回读取的一个字节.如果读到文件末尾返回EOF. EOF其实就是一个宏 #define EOF (-1) 表示-1. 既然返 ...

  4. mysql修改表中某个字段的默认值

    Mysql中用SQL增加.删除字段,修改字段名.字段类型.注释,调整字段顺序总结 在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或 ...

  5. AOP开发——在不修改源代码的前提下,对类里面的方法进行增强 : 前置 后置 环绕 异常||如何得到目标方法的参数和返回值

    AOP开发 @Transactionl 在不修改源代码的前提下,对类里面的方法进行增强 前置 后置 环绕 异常 创建项目前引入aop的包 <dependency>     <grou ...

  6. struts 修改拦截器修改返回值_关于struts2简单的介绍与示例

    Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构.它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构. 缘起于Apache St ...

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

    Cannot modify the return value of 'expression' because it is not a variable 无法修改"expression&quo ...

  8. Spring/SpringBoot 过滤器修改、获取http 请求request中的参数 和 response返回值,比如修改请求体和响应体的字符编码

    通过自定义filter,RequestWrapper,ResponseWrapper 处理请求和响应数据,比如修改请求体和响应体的字符编码 1.request 和 response 中的数据都是 存在 ...

  9. Java中int的取值范围

    先上代码,通过下面代码的执行结果观察 public class Test {public static void main(String[] args) {// 2的31次方int j = (int) ...

最新文章

  1. vue引入图片路径的三种主要方法
  2. OpenStack入门修炼之实战--实现阿里云ESC多FLAT网络(21)
  3. boost::mp11::mp_any_of相关用法的测试程序
  4. Apache Camel –从头开始开发应用程序(第1部分/第2部分)
  5. C++(STL):30 ---关联式容器map的operator[]和insert效率对比
  6. windows10双系统安装ubuntu18.04
  7. 做箭步蹲的时候身体总是保持不了平衡,动作要领是什么?
  8. HDFS的java API操作(基于Windows平台的Eclipse)
  9. IT书籍汇总下载(python_c++_java_android_网络安全)等-持续更新
  10. 科研绘图软件GraphPad Prism教程(三)
  11. 微信小程序分享页面,分享到朋友圈
  12. 采用动态规划思维求解数塔问题,c++实现
  13. Qt 之打开系统文件管理器
  14. 手机传感器的意义:未来生活将被彻底改变
  15. 承德医学院计算机信息,研究生院 信息发布
  16. 想教小学计算机面试报哪个,小学教师资格证面试,建不建议考信息技术?
  17. 186、项目超过255个摄像机怎么分配IP地址
  18. 如何用 Python 做自动化测试
  19. 云南计算机专修学校附中,2015昆明最强高中排行榜出炉 师大附中拿下第一
  20. C语言实现将一个整形数转换为两个字节16进制

热门文章

  1. Bigemap中如何添加其他在线地图源
  2. choice数据库导出股票数据
  3. windows鼠标消息
  4. 互斥 互斥的解决方案
  5. centos7查看ip命令
  6. VUE如何快速做一个轮播图
  7. 文件上传漏洞利用介绍
  8. 斯坦福视觉课程CS131简介
  9. 乘车码来了,地铁公交都可以刷微信了
  10. 理解java接口和抽象类