PremiumBill x = list.OrderBy(j => j.PostingDate).FirstOrDefault(j => j.PostingDate >= input.PostingDate);
您好,我正在嘗試將陣列中的值保存在變數中以在陣列更改時保留它,但變數的值隨其更改而更改。我試過了
PremiumBill[] temporaryList = (PremiumBill[])List.ToArray().Clone();
PremiumBill x = temporaryList.OrderBy(j => j.PostingDate).FirstOrDefault(j => j.PostingDate >= input.PostingDate);
我嘗試復制到并得到同樣的東西
uj5u.com熱心網友回復:
您想要的是陣列的深層副本。目前,您擁有的是一個淺拷貝,其中兩個陣列都指向相同的參考。
下面是一個使用ICloneable介面進行深拷貝的例子。執行深度復制有多種方法,我通常更喜歡使用 JSON 進行序列化和反序列化。此方法適用于可序列化物件,但如果遇到例外,請改用ICloneable介面。您可以參考這個問題Deep Copy with Array。
public class Program
{
public static void Main()
{
Foo[] foos = new Foo[]
{
new Foo() { Bar = 1 } ,
new Foo() { Bar = 2 } ,
new Foo() { Bar = 3 } ,
};
Foo[] tempFoos = foos.Select(r => (Foo)r.Clone()).ToArray();
foos[0].Bar = 5;
Foo foo1 = tempFoos[0];
Console.WriteLine(foo1.Bar); // outputs 1
}
}
class Foo : ICloneable
{
public int Bar { get; set; }
public object Clone()
{
return new Foo() { Bar = this.Bar };
}
}
發布了一個答案,因為用一個例子這樣做更有意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/324138.html
