c# List find()方法返回值的問題說明(返回結果為對象的指針)
C#中List<T>中泛型T如果是一個對象的話,則利用Find函數(shù)返回的將是這個對象的指針,對其返回對象的屬性進行操作,也會影響list中相應元素對象的值。驗證如下:
1.新建一個Class1類,其含有兩個姓名和分數(shù)兩個屬性:
<SPAN style="FONT-SIZE: 18px"> public class Class1
{
public string name{ get; set; }
public int score { get; set; }
}</SPAN>
2.在窗口類中寫入如下代碼,在button1_Click的事件中的右括號處設置斷點。
<SPAN style="FONT-SIZE: 18px"> 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);
}</SPAN>
3.運行結果如下:
由圖可知,想button事件中對對象c的改變,使list中相應對象也發(fā)生了改變。故其返回值為對象的引用