Wystarczy dodać do odpowiedzi CKoeniga. Jego odpowiedź będzie działać tak długo, jak klasa, z którą masz do czynienia, jest typem odniesienia (jak klasa). Jeśli obiekt niestandardowy był strukturą, jest to typ wartości, a wyniki .FirstOrDefault
dadzą lokalną kopię tego, co będzie oznaczać, że nie będzie się utrzymywał z powrotem w kolekcji, ponieważ ten przykład pokazuje:
struct MyStruct
{
public int TheValue { get; set; }
}
Kod
test:
List<MyStruct> coll = new List<MyStruct> {
new MyStruct {TheValue = 10},
new MyStruct {TheValue = 1},
new MyStruct {TheValue = 145},
};
var found = coll.FirstOrDefault(c => c.TheValue == 1);
found.TheValue = 12;
foreach (var myStruct in coll)
{
Console.WriteLine(myStruct.TheValue);
}
Console.ReadLine();
wyjście jest 10,1,145
Zmiana struct do klasy i wyjście jest 10,12,145
HTH
Dzięki CKoenig będzie to uzyskać odwołanie do 'obj' lub wartości (kopia)? innymi słowy, czy zmieni się obiekt wewnątrz listy? – Burjua
Myślę, że to by nie działało, jeśli obiekt jest typu struct, uczyń go klasą :) –
Ponieważ masz listę niestandardowych obiektów (zakładając, że jest to klasa, a nie struktura), masz do czynienia z typem referencyjnym , będzie to odniesienie do tego obiektu, a modyfikacja będzie "trwała" - zmodyfikuje obiekt w kolekcji. –