class Graphics
public static Image[] ImageArray = new Image[16];
Run Code Online (Sandbox Code Playgroud)
而在不同的班级里,
//Copy original Array
tempArray = Graphics.ImageArray;
Run Code Online (Sandbox Code Playgroud)
我正在尝试制作tempArray静态变量的精确副本,它永远不会改变,但tempArray需要改变。它似乎不是复制静态变量,而是向其中添加另一个变量名。
因为如果我改变了tempArray,就好像我改变了一样ImageArray。如何ImageArray通过制作tempArray非静态副本来简单地复制?
为什么复制我的静态变量的新变量会更改我的静态变量?
简短的回答是,因为它不会复制您的静态变量。它创建对同一静态变量的第二个引用,而不进行复制。这就是为什么通过变量改变数组与tempArray通过变量改变它是等价的ImageArray。
那么...我该如何复制它呢?
这取决于您需要的副本类型:
Array.Copy方法ToArray方法,并在Select.浅拷贝:
tempArray = new Image[Graphics.ImageArray.Length];
Array.Copy(Graphics.ImageArray, tempArray, Graphics.ImageArray.Length);
Run Code Online (Sandbox Code Playgroud)
深拷贝:
tempArray = Graphics.ImageArray.Select(img => new Image(img)).ToArray();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |