您的位置:首页 > 游戏 > 游戏 > 买完域名怎么创建网站_桂林网丫网业管理有限公司_短视频如何引流与推广_外贸网站搭建

买完域名怎么创建网站_桂林网丫网业管理有限公司_短视频如何引流与推广_外贸网站搭建

2025/5/14 6:42:47 来源:https://blog.csdn.net/qq_34047402/article/details/146440139  浏览:    关键词:买完域名怎么创建网站_桂林网丫网业管理有限公司_短视频如何引流与推广_外贸网站搭建
买完域名怎么创建网站_桂林网丫网业管理有限公司_短视频如何引流与推广_外贸网站搭建
一、问题的起源如下的代码是错误的,无法编译通过
struct Point
{public int X;public int Y;
}List<Point> points = new List<Point> { new Point { X = 1, Y = 2 } };
points[0].X = 10; // 编译错误!无法修改副本的字段

二、原因分析

          在C#中,结构体(struct)是值类型,当其存储在List<T>中时,直接通过索引访问获取的是该结构体的副本,而非原始实例的引用。因此,直接修改结构体字段的值会导致编译错误,因为你在尝试修改一个临时副本,这个没有意义。

     上述代码的正确做法:

// 取出副本
Point temp = points[0];
// 修改副本
temp.X = 10;
// 将副本重新赋值回列表
points[0] = temp;

三、如果是类,下属代码就没有问题,因为list中存储的是对象的指针。可以直接修改其中的变量。

class Point
{public int X { get; set; }public int Y { get; set; }
}

List<Point> points = new List<Point> { new Point { X = 1, Y = 2 } };

points[0].X = 10; 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com