[英].NET - Get the reference of an object from ListOfObject
這是我的員工班
public class Employee {
public String Name {get ;set ;}
public int ID {get ;set ;}
}
這是我的員工名單
Public List<Employee> lstEmployee ;
lstEmployee=new List<Employee>();
lstEmployee.Add(new Employee() { Name ="Abc", Id=1});
lstEmployee.Add(new Employee() { Name ="Xyz", Id=2});
lstEmployee.Add(new Employee() { Name ="Pqr", Id=3});
所以我可以用這個查詢員工
Employee emp = lstEmployee. Where(emp=>emp.ID==1);
如果我打印emp.Name和emp.ID,我將分別獲得Abc和1。
現在我更改值
Emp.Name="Test"
基於局部變量的值將被更新,但是ID為1的lstEmployee中Name的值將保持不變。
有什么方法可以獲取對象的引用,以便如果我們更改屬性,它將更新列表。
如果這是沒有道理的,請原諒我。
我相信我可以通過將其直接應用到列表中來實現,就像lstEmployee. Where(emp=>emp.ID==1).Name="Test"
一樣lstEmployee. Where(emp=>emp.ID==1).Name="Test"
lstEmployee. Where(emp=>emp.ID==1).Name="Test"
。
但是在當前情況下,有一個函數可以從列表中返回Emp對象,因此我需要進行更新。 所以我想獲得參考。 提前致謝
基於局部變量的值將被更新,但是ID為1的lstEmployee中Name的值將保持不變。
那不是真的。 唯一正確的方法是將Employee定義為struct
而不是class
。 如果將Employee作為一個類構建,則本地引用和列表引用都將引用同一對象,並且在更新本地引用時,還將更新列表中的對象。
此外,您的問題中的以下代碼不應編譯:
Employee emp = lstEmployee. Where(emp=>emp.ID==1);
.Where()
方法返回IEnumerable
而不是單個對象。 您需要這樣的東西:
Employee emp = lstEmployee. Where(emp=>emp.ID==1).First();
其中不返回單個對象,而是一個集合。 我不知道如何從Where(emp=>emp.ID==1).Name="Test"
訪問Name屬性。
我建議使用FirstOrDefault
代替Where
。
Employee emp = lstEmployee.FirstOrDefault(emp=>emp.ID==1);
列表已保留引用。
Employee emp = lstEmployee.First(emp=>emp.ID==1);
此處emp指向列表內具有指針的同一實例。
所以您所說的是錯誤的(lstEmployee中ID為1的Name的值將保持不變。)它將被更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.