考慮下面的代碼:重新分配的類索引的陣列(引用類型)
//Written in a WPF project, simply attach the handler to a button for testing code.
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public class A
{
public int X;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
A[] Collection = new A[2];
for (int i = 0; i < Collection.Length; i++)
{
Collection[i] = new A();
}
Collection[0].X = 1;
Collection[1] = Collection[0];
Collection[0].X = 2;
MessageBox.Show("Collection[0].X = " + Collection[0].X + ", Collection[1].X = " + Collection[1].X);
//The messagebox produces: "Collection[0].X = 2, Collection[1].X = 2"
//Wanted behaviour: "Collection[0].X = 2, Collection[1].X = 1"
}
}
由於類的數組,集合,是引用類型。集合[0]指向與集合[1]相同的內存區域。
我的問題是,如何才能 「拷貝」 集合[0]值集合[1],所以我得到以下輸出:
「集合[0] .X = 2,集合[ 1] .X = 1「
只是說 - 值類型...如果你使'class A'成爲'struct',而不是它做你想要的。 – doctorlove