PDA

View Full Version : مقدار دهی به فیلد یک لیست از نوع ساختار



nasimsaba
یک شنبه 30 شهریور 1393, 11:37 صبح
سلام
من میخوام مقدار فیلد یک لیست که از نوع ساختار تعریفی خودم هست رو تغییر بدم ولی نمیتونم و خطا زیر رو میده.دوستان لطفا راهنمایی کنن

struct Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}

var list = new List<Person>();
list.Add(new Person { FirstName = "F1", LastName = "L1" });
list.Add(new Person { FirstName = "F2", LastName = "L2" });
list.Add(new Person { FirstName = "F3", LastName = "L3" });

list[1].FirstName = "F22";

خطایی که میده اینه :
Can't modify the expression because it's not a variable

Davidd
یک شنبه 30 شهریور 1393, 14:46 عصر
سلام
ساختارها رو نميشه مستقيما داخل كاكشن هاي جنريك مثل ليست تغيير داد
Person p = list[1];
p.FirstName = "F22";
list[1] = p;
براي اطلاع ، اگه به جاي struct از class استفاده ميكردي اين خطارو نمي داد. علتش اينه كه كلاس ها reference based هستند ولي ساختارها value based . بنابراين وقتي مي نويسي list[1].FirstName در واقع يك كپي از FirstName برگردونده ميشه مثل يه تابع كه مقدار برميگردونه.