天天看點

c# List find()方法傳回值的問題(傳回結果為對象的指針)

    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.運作結果如下:

c# List find()方法傳回值的問題(傳回結果為對象的指針)

由圖可知,想button事件中對對象c的改變,使list中相應對象也發生了改變。故其傳回值為對象的引用

繼續閱讀