لیست دو بعدی در سیشارپ (#C)
لیست دو بعدی در سیشارپ (#C) با List> ایجاد میشود و برای مدیریت دادههای جدولی، ماتریسها و اطلاعات پویا کاربرد دارد.
لیست دو بعدی در سیشارپ (#C)
لیست دو بعدی در سیشارپ یکی از ساختارهای دادهای پرکاربرد است که برای ذخیره و مدیریت اطلاعات بهصورت سطری و ستونی استفاده میشود.
این ساختار با استفاده از List<List<T>> پیادهسازی میشود؛ به این معنا که هر عنصر از لیست اصلی، خود یک لیست مجزا است.
برخلاف آرایههای دو بعدی، لیست دو بعدی اندازه ثابتی ندارد و میتوان در زمان اجرای برنامه بهراحتی سطر یا ستون جدید به آن اضافه کرد یا دادههای موجود را حذف و ویرایش نمود.
استفاده از لیست دو بعدی در پروژههایی مانند سیستمهای مدیریت اطلاعات، ثبت نمرات دانشآموزان، جدول قیمت محصولات، بازیهای دوبعدی و پردازش دادههای ماتریسی بسیار رایج است.
همچنین این ساختار به دلیل انعطافپذیری بالا، زمانی که تعداد دادهها از قبل مشخص نیست یا ممکن است در طول اجرای برنامه تغییر کند، گزینهای مناسبتر از آرایه دو بعدی محسوب میشود.
لیست دو بعدی در سیشارپ چیست؟
در سیشارپ کلاس List<T> ذاتاً یکبعدی است.اما میتوان با قرار دادن یک لیست داخل لیست دیگر، ساختاری دو بعدی ایجاد کرد.
ساختار کلی:
List<List<int>> numbers = new List<List<int>>();
در این مثال:
- لیست اصلی نماینده سطرها است.
- هر لیست داخلی نماینده ستونهای همان سطر است.
در واقع مشابه جدول زیر عمل میکند:
| سطر | مقادیر |
| 0 | 10,20,30 |
| 1 | 40,50,60 |
| 2 | 70,80,90 |
مزایای لیست دو بعدی در سی شارپ
-
انعطافپذیری بالا
-
امکان افزایش یا کاهش اندازه در زمان اجرا
-
مدیریت ساده دادههای جدولی
-
مناسب برای پروژههای پویا
-
سازگار با امکانات LINQ

معایب لیست دو بعدی در سی شارپ
-
مصرف حافظه بیشتر نسبت به آرایه
-
سرعت دسترسی کمی کمتر
-
نیاز به مدیریت سطرها و ستونها هنگام حذف یا افزودن
نحوه ایجاد لیست دو بعدی در سی شارپ
ابتدا فضای نام زیر را اضافه کنید:using System.Collections.Generic;
سپس:
List<List<int>> matrix = new List<List<int>>();
اکنون سه سطر به آن اضافه میکنیم.
matrix.Add(new List<int> { 1, 2, 3 });
matrix.Add(new List<int> { 4, 5, 6 });
matrix.Add(new List<int> { 7, 8, 9 });
خروجی ساختار به شکل زیر خواهد بود:
1 2 3
4 5 6
7 8 9
دسترسی به عناصر لیست دو بعدی در سی شارپ
برای دسترسی به یک مقدار باید ابتدا شماره سطر و سپس شماره ستون را مشخص کنید.ساختار:
matrix[row][column]
مثال:
Console.WriteLine(matrix[1][2]);
خروجی:
6
زیرا:
سطر شماره 1 برابر است با:
4 5 6
ستون شماره 2 مقدار 6 را برمیگرداند.
تغییر مقدار یک عنصر
فرض کنید بخواهیم عدد 5 را به 100 تغییر دهیم.matrix[1][1] = 100;
اکنون جدول به شکل زیر خواهد بود:
1 2 3
4 100 6
7 8 9
پیمایش لیست دو بعدی با حلقه for در سی شارپ
رایجترین روش استفاده از دو حلقه تو در تو است.for (int i = 0; i < matrix.Count; i++)
{
for (int j = 0; j < matrix[i].Count; j++)
{
Console.Write(matrix[i][j] + " ");
}
Console.WriteLine();
}
خروجی:
1 2 3
4 5 6
7 8 9
پیمایش با foreach
گاهی استفاده از foreach کد را خواناتر میکند.foreach (var row in matrix)
{
foreach (var item in row)
{
Console.Write(item + " ");
}
Console.WriteLine();
}
خروجی همانند قبل خواهد بود.
افزودن یک سطر جدید
فرض کنید بخواهیم یک سطر دیگر اضافه کنیم.matrix.Add(new List<int> { 10, 11, 12 });
نتیجه:
1 2 3
4 5 6
7 8 9
10 11 12
افزودن ستون جدید
برای اضافه کردن ستون باید به تکتک سطرها مقدار اضافه کنیم.matrix[0].Add(50);
matrix[1].Add(60);
matrix[2].Add(70);
اکنون جدول به شکل زیر است:
1 2 3 50
4 5 6 60
7 8 9 70
حذف یک سطر
برای حذف سطر دوم:matrix.RemoveAt(1);
نتیجه:
1 2 3
7 8 9
حذف یک ستون
اگر بخواهیم ستون دوم حذف شود:foreach (var row in matrix)
{
row.RemoveAt(1);
}
جدول:
1 3
7 9
مثال کاربردی: ثبت نمرات دانشآموزان
فرض کنید هر سطر یک دانشآموز و هر ستون یک درس باشد.List<List<int>> scores = new List<List<int>>
{
new List<int>{18,20,17},
new List<int>{15,19,20},
new List<int>{14,16,18}
};
نمایش نمرات:
for (int i = 0; i < scores.Count; i++)
{
Console.Write("دانش آموز " + (i + 1) + ": ");
foreach (var score in scores[i])
{
Console.Write(score + " ");
}
Console.WriteLine();
}
خروجی:
دانش آموز 1: 18 20 17
دانش آموز 2: 15 19 20
دانش آموز 3: 14 16 18
محاسبه میانگین هر دانشآموز
foreach (var student in scores)
{
double average = student.Average();
Console.WriteLine(average);
}
خروجی:
18.33
18
16
مثال کاربردی: جدول قیمت محصولات
List<List<int>> prices = new List<List<int>>
{
new List<int>{120,150,180},
new List<int>{300,250,280},
new List<int>{450,500,470}
};
نمایش:
foreach(var row in prices)
{
foreach(var item in row)
{
Console.Write(item + "\t");
}
Console.WriteLine();
}
تفاوت آرایه دو بعدی و لیست دو بعدی در سی شارپ
| ویژگی | آرایه دو بعدی | لیست دو بعدی |
| اندازه ثابت | ✅ | ❌ |
| افزودن سطر | ❌ | ✅ |
| حذف سطر | ❌ | ✅ |
| افزودن ستون | ❌ | ✅ |
| سرعت | بیشتر | کمی کمتر |
| انعطاف | کم | زیاد |
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
چه زمانی از لیست دو بعدی استفاده کنیم؟
لیست دو بعدی زمانی مناسب است که:-
تعداد سطرها مشخص نباشد.
-
تعداد ستونها در هر سطر متفاوت باشد.
-
نیاز به افزودن یا حذف داده در زمان اجرا داشته باشید.
-
دادهها بهصورت پویا مدیریت شوند.

نکات مهم لیست دو بعدی در سیشارپ (#C)
- برای دسترسی به عناصر از الگوی list[row][column] استفاده کنید.
- هر سطر میتواند تعداد ستون متفاوتی داشته باشد.
- قبل از دسترسی به اندیسها، مقدار Count را بررسی کنید تا از بروز خطای IndexOutOfRangeException جلوگیری شود.
- در صورت نیاز به عملیات جستجو، فیلتر یا محاسبات، از قابلیتهای LINQ بهره ببرید.
جمعبندی
لیست دو بعدی در سیشارپ یکی از ساختارهای دادهی کاربردی برای نگهداری اطلاعات جدولی و پویا است. این ساختار با استفاده از List<List<T>> پیادهسازی میشود و امکان افزودن، حذف و ویرایش سطرها و ستونها را بهسادگی فراهم میکند.
اگر پروژه شما شامل دادههایی با اندازه متغیر است، استفاده از لیست دو بعدی نسبت به آرایه دو بعدی انتخاب مناسبتری خواهد بود.


کاربران ما
شما هم نظرتون با ما دریاره “لیست دو بعدی در سیشارپ (#C)” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید