此代碼的結果是「1」和「2」。當我將Foo「a」分開時,它會創建一個「b」實例,以及我對「b」所做的所有事情,它恰好也是「a」。 是否有任何解決方案可以給出完全獨立的Foo實例?所以我的代碼的結果將是「1」和「1」。克隆獨立實例
using System.IO;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Baar b0 = new Baar();
Baar b1 = new Baar();
Baar b2 = new Baar();
Baar b3 = new Baar();
Foo a = new Foo(200);
a.addBaar(b0);
Console.WriteLine(a.baars.Count);
Foo b = a.split(100);
b.addBaar(b1) ;
Console.WriteLine(a.baars.Count);
}
}
class Foo
{
public int amount;
public List<Baar> baars = new List<Baar>();
public Foo(int amount)
{
this.amount = amount;
}
private Foo(int amount, List<Baar> baars)
{
this.amount = amount;
this.baars = baars;
}
public void addBaar(Baar baar)
{
this.baars.Add(baar);
}
public Foo split(int amount)
{
int diff = this.amount - amount;
this.amount = amount;
return new Foo(diff, this.baars);
}
}
class Baar
{
public Baar()
{
}
}
「這段代碼的結果是 」1「 和 」2「。'...'所以我的代碼的結果將是 」1「 和 」2「。」 - 是這些錯誤之一,還是你的代碼已經做了你想要的? – Blorgbeard
[Deep cloning objects]的可能重複(http://stackoverflow.com/questions/78536/deep-cloning-objects) –
是的,這是一個錯字。大聲笑。我已糾正它。 – user3568719