谷歌搜索后我才知道除非你手动完成,否则它是不可能的。以此代码为例:
public struct SEverything
{
public int[] arrayOfHouseNumbers;
public string nameOfOwner;
}
我只知道复制它的一种非常麻烦的方法,以及创建一个新结构并按照这样做:
private void CopySEverything()
{
sEverythingCopy = new SEverything();
sEverythingCopy.nameOfOwner = sEverythingOriginal.nameOfOwner;
sEverythingCopy.arrayOfHouseNumbers = new
int[sEverythingOriginal.arrayOfHouseNumbers.Length];
for (int i = 0; i < sEverythingCopy.Length; i++)
{
sEverythingCopy[i] = sEverythingOriginal[i];
}
}
我使用了一个更复杂的结构,如果对一个大结构执行上述操作会非常烦人,更不用说如果更改了结构的结构,则必须重写代码。任何建议都是非常受欢迎的。
e:正在序列化和反序列化一个好的选项吗?
答案 0 :(得分:0)
private void CopySEverything()
{
sEverythingCopy = new SEverything();
sEverythingCopy.nameOfOwner = sEverythingOriginal.nameOfOwner;
sEverythingCopy.arrayOfHouseNumbers = new
int[sEverythingOriginal.arrayOfHouseNumbers.Length];
for (int i = 0; i < sEverythingCopy.Length; i++)
{
sEverythingCopy[i] = sEverythingOriginal[i];
}
}
可以简化为:
private void CopySEverything()
{
sEverythingCopy = new SEverything();
sEverythingCopy.nameOfOwner = sEverythingOriginal.nameOfOwner;
sEverythingCopy.arrayOfHouseNumbers = sEverythingOriginal.arrayOfHouseNumbers.ToArray();
}
您还应该考虑https://github.com/Burtsev-Alexey/net-object-deep-copy/blob/master/ObjectExtensions.cs。