簡體   English   中英

.NET-從ListOfObject獲取對象的引用

[英].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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM