pko*_*iej 2 c# list value-type
我们都知道泛型List <>没有框值类型.为什么在以下代码片段中,rects [1]不受Inflate方法的影响?
如果没有拳击,我想要改变rect [1]我需要编写三行代码,如图所示 - 评论.有人可以解释一下吗?
List<Rectangle> rects = new List<Rectangle>();
for (int i = 0; i < 5; i++)
{
rects.Add(new Rectangle(1, 1, 1, 1));
}
foreach (Rectangle item in rects)
{
Console.WriteLine(item);
}
//Rectangle r = rects[1];
//r.Inflate(100, 100);
//rects[1] = r;
rects[1].Inflate(100, 100);
foreach (Rectangle item in rects)
{
Console.WriteLine(item);
}
Run Code Online (Sandbox Code Playgroud)
它不是装箱 - 只是当你拿出矩形时,你正在操纵矩形的独立副本.
这是具有可变值类型(结构)的副作用之一.你不应该编写自己的可变结构的原因 - 丢失数据太容易了.
既然你不能使预制的矩形不可变,我恐怕你不得不把它复制出来; 改变它; 并把它放回去.
| 归档时间: |
|
| 查看次数: |
4121 次 |
| 最近记录: |