C#中List<T>中泛型T如果是一個對象的話,則利用Find函數傳回的将是這個對象的指針,對其傳回對象的屬性進行操作,也會影響list中相應元素對象的值。驗證如下:
1. 建立一個Class1類,其含有兩個姓名和分數兩個屬性:
public class Class1
{
public string name{ get; set; }
public int score { get; set; }
}
2.在視窗類中寫入如下代碼,在button1_Click的事件中的右括号處設定斷點。
public Form1()
{
InitializeComponent();
}
Class1 a = new Class1();
Class1 b = new Class1();
List<Class1> l = new List<Class1>();
private void button1_Click(object sender, EventArgs e)
{
string name = "小明";
Class1 c = l.Find(delegate(Class1 p) { return (p.name.Equals(name)); });
c.score = 100;
}
private void Form1_Load(object sender, EventArgs e)
{
a.name = "小明";
a.score = 90;
l.Add(a);
b.name = "小紅";
b.score = 99;
l.Add(b);
}
3.運作結果如下:
由圖可知,想button事件中對對象c的改變,使list中相應對象也發生了改變。故其傳回值為對象的引用