PDA

View Full Version : سوال: کار کردن با لیست



irpersian20
دوشنبه 19 فروردین 1392, 18:45 عصر
سلام
من یک لیست از نوع Struct دارم


List<test>

آیا این امکان برای من هست که با یک حلقه for درونش حرکت کنم؟(با توجه به تست که انجام دادم ظاهرا بله!!)
من میخوام درون هر عنصر برم.سپس هر عنصر خودش یک ساختار هست و جزئی از این ساختار که مثلا Time هست. رو یک مقدار دیگه جاهاش بزارم یا مثلا با عدد 5 جمع کنم. بزارم سر جاش.
مهم تر موقع اش که شد. از لیست هم حذف کنم عنصر رو.
حالا این عنصر میتونه اول یا اخر یا وسط باشه
ایا لیست می زاره؟ اگر نه چه راه دیگری دارم؟ ممنون

Mahmoud.Afrad
دوشنبه 19 فروردین 1392, 19:59 عصر
اگر از struct استفاده کنی میتونی با واسطه مقادیر فیلد هر عنصر از لیست رو عوض کنی:

struct MyStruct
{
public int a;
}

private void button1_Click(object sender, EventArgs e)
{
List<MyStruct> lstStruct = new List<MyStruct>();
lstStruct.Add(new MyStruct() { a = 3 });
lstStruct.Add(new MyStruct() { a = 6 });
lstStruct.Add(new MyStruct() { a = 8 });

for (int i = 0; i < lstStruct.Count; i++)
{
MyStruct cs = lstStruct[i];
cs.a += 5;
lstStruct[i] = cs;
}
}


ولی اگر از کلاس استفاده کنی مستقیما:

class MyClass
{
public int a;
}

private void button1_Click(object sender, EventArgs e)
{
List<MyClass> lstMyClass = new List<MyClass>();
lstMyClass.Add(new MyClass() { a = 3 });
lstMyClass.Add(new MyClass() { a = 6 });
lstMyClass.Add(new MyClass() { a = 8 });

for (int i = 0; i < lstMyClass.Count; i++)
{
lstMyClass[i].a += 5;
}
}


برای حذف هم بله کافیه شئ مورد نظر را از طریق متد Remove و یا با داشتن اندیس با RemoveAt پاک کنی
مثال:

MyClass mc = lstMyClass.SingleOrDefault(i => i.a > 10);
if (mc != null)
{
lstMyClass.Remove(mc);
}