"

لیست در سی‌شارپ (<List<T),نحوه ساخت لیست در #C,افزودن عنصر به List با متد Add

لیست در سی‌شارپ

لیست در سی‌شارپ (

تیم تحریریه
12
0
19 مرداد 1405
لینک کوتاه

لیست در سی‌شارپ (<List<T) 

لیست در سی‌شارپ (<List<T) یکی از پرکاربردترین ساختارهای داده در زبان برنامه‌نویسی #C است که برای نگهداری مجموعه‌ای از داده‌ها استفاده می‌شود.
برخلاف آرایه‌ها، اندازه لیست از ابتدا ثابت نیست و می‌توان در زمان اجرای برنامه به آن عنصر اضافه کرد یا عناصر موجود را حذف کرد.
در پروژه‌های واقعی، زمانی که تعداد داده‌ها از قبل مشخص نیست یا ممکن است در طول اجرای برنامه تغییر کند، استفاده از <List<T معمولاً انتخاب مناسبی است.
برای مثال، در یک سیستم فروشگاهی می‌توان لیستی از محصولات، در یک سیستم آموزشی لیستی از دانش‌آموزان و در یک برنامه حسابداری لیستی از تراکنش‌ها ایجاد کرد.




لیست در سی‌شارپ (<List<T) 

لیست در سی‌شارپ چیست؟

در زبان #C ، کلاس <List<T در فضای نام System.Collections.Generic قرار دارد.
حرف T نشان‌دهنده نوع داده‌ای است که قرار است در لیست ذخیره شود.
برای مثال، اگر بخواهیم لیستی از اعداد صحیح ایجاد کنیم، می‌توانیم از <List<int استفاده کنیم:
using System.Collections.Generic;
List<int> numbers = new List<int>();

در این مثال، متغیر numbers فقط می‌تواند مقادیر نوع int را نگهداری کند.
برای ایجاد لیستی از رشته‌ها نیز می‌توان نوشت:
List<string> names = new List<string>();
در این حالت، عناصر لیست باید از نوع string باشند.

چرا از <List<T در سی‌شارپ استفاده می‌کنیم؟

آرایه‌ها زمانی بسیار کاربردی هستند که تعداد عناصر از قبل مشخص باشد؛ اما در بسیاری از برنامه‌ها تعداد داده‌ها ثابت نیست.
فرض کنید در حال ساخت یک برنامه مدیریت دانش‌آموزان هستید.
ممکن است در ابتدا ۲۰ دانش‌آموز داشته باشید، اما بعداً چند دانش‌آموز جدید به سیستم اضافه شوند.
اگر از آرایه استفاده کنید، مدیریت تغییر اندازه آن دشوارتر خواهد بود.
در چنین شرایطی <List<T گزینه مناسبی است، زیرا امکان افزودن و حذف عناصر را بدون تعیین اندازه ثابت اولیه فراهم می‌کند.

مهم‌ترین ویژگی‌های لیست در سی شارپ

برخی از مهم‌ترین ویژگی‌های لیست عبارت‌اند از:

  • اندازه پویا

  • امکان افزودن عنصر جدید

  • امکان حذف عنصر

  • امکان جست‌وجوی داده‌ها

  • دسترسی به عناصر با اندیس

  • مرتب‌سازی عناصر

  • سازگاری مناسب با LINQ

  • پشتیبانی از انواع داده مختلف


    مهم‌ترین ویژگی‌های لیست در سی شارپ





آیا به دنبال یک فرصت عالی برای یادگیری برنامه
‌نویسی هستید؟ 🚀

با دوره آموزشی سی‌شارپ ما، شما می‌توانید مهارت‌های خود را به سطح جدیدی ارتقا دهید! این دوره به‌طور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامه‌نویسی سی‌شارپ پیش بروید.

👨‍🏫 چرا دوره ما را انتخاب کنید؟

  • محتوای جامع و عملی: با پروژه‌های واقعی و تمرینات عملی، یادگیری را به تجربه‌ای جذاب تبدیل کنید.
  • مدرس مجرب: از تجربه و دانش مدرس حرفه‌ای بهره‌مند شوید که شما را در هر مرحله از یادگیری راهنمایی می‌کنند.
  • پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
  • دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، می‌توانید به آن مراجعه کنید.

💡 فرصت را از دست ندهید!

بایادگیری سی‌شارپ، می‌توانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژه‌های جذاب و چالش‌برانگیز شرکت کنید.

همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده‌ای روشن‌تر بردارید!

شرکت در دوره آموزش برنامه نویسی سی شارپ




نحوه ساخت لیست در
#C

برای ساخت یک لیست ابتدا باید فضای نام مربوط به آن را اضافه کنیم:

using System.Collections.Generic;

سپس می‌توانیم یک لیست ایجاد کنیم:

List<string> products = new List<string>();

یا در نسخه‌های جدید #C از شکل کوتاه‌تر استفاده کنیم:

List<string> products = new();
حالا می‌توانیم محصولات را به لیست اضافه کنیم.

products.Add("Laptop");
products.Add("Mouse");
products.Add("Keyboard");

محتوای لیست در این حالت به شکل زیر خواهد بود:
  • Laptop
  • Mouse
  • Keyboard

افزودن عنصر به List با متد Add

یکی از مهم‌ترین متدهای <List<T ، متد ()Add است.
با استفاده از این متد می‌توان یک عنصر جدید به انتهای لیست اضافه کرد.

List<string> names = new List<string>();
names.Add("Ali");
names.Add("Sara");
names.Add("Reza");


اکنون لیست شامل سه نام است.
اگر بخواهیم یک نام دیگر اضافه کنیم:

names.Add("Mina");

عنصر جدید به انتهای لیست اضافه می‌شود.

اضافه کردن چند عنصر با AddRange

اگر چند مقدار را به صورت هم‌زمان داشته باشیم، می‌توانیم از ()AddRange استفاده کنیم.

List<string> products = new List<string>();
products.AddRange(new List<string>
{
    "Laptop",
    "Monitor",
    "Mouse",
    "Keyboard"
});

این روش زمانی کاربردی است که بخواهیم مجموعه‌ای از داده‌ها را یکجا به لیست اضافه کنیم.

دسترسی به عناصر List در سی‌شارپ

هر عنصر در <List<T دارای یک اندیس است.
اندیس اولین عنصر از صفر شروع می‌شود.
برای مثال:

List<string> names = new List<string>
{
    "Ali",
    "Sara",
    "Reza"
};
در این لیست:
names[0] → Ali
names[1] → Sara
names[2] → Reza

برای دریافت اولین عنصر می‌توان نوشت:

Console.WriteLine(names[0]);
خروجی:
Ali



تغییر مقدار یک عنصر در List

از آنجا که عناصر لیست با اندیس قابل دسترسی هستند، می‌توان مقدار آن‌ها را نیز تغییر داد.

List<string> names = new List<string>
{
    "Ali",
    "Sara",
    "Reza"
};
names[1] = "Mina";

اکنون مقدار عنصر دوم از Sara به Mina تغییر کرده است.

حذف عنصر از List

برای حذف یک عنصر مشخص می‌توان از متد ()Remove استفاده کرد.

List<string> names = new List<string>
{
    "Ali",
    "Sara",
    "Reza"
};
names.Remove("Sara");

پس از اجرای این دستور، Sara از لیست حذف می‌شود.
اگر بخواهیم عنصری را بر اساس موقعیت آن حذف کنیم، می‌توانیم از ()RemoveAt استفاده کنیم:
names.RemoveAt(0);
این دستور اولین عنصر لیست را حذف می‌کند.

حذف تمام عناصر List

برای پاک کردن تمام عناصر یک لیست از ()Clear استفاده می‌شود:

names.Clear();
پس از اجرای این دستور، لیست خالی خواهد شد.
برای بررسی تعداد عناصر نیز می‌توان از Count استفاده کرد:

Console.WriteLine(names.Count);
اگر لیست خالی باشد، مقدار Count برابر صفر خواهد بود.

بررسی وجود یک مقدار در List

گاهی لازم است قبل از انجام یک عملیات بررسی کنیم که مقدار خاصی در لیست وجود دارد یا خیر.
برای این کار می‌توان از ()Contains استفاده کرد:
List<string> products = new List<string>
{
    "Laptop",
    "Mouse",
    "Keyboard"
};
bool exists = products.Contains("Mouse");
Console.WriteLine(exists);

خروجی:
True
این روش در برنامه‌هایی مانند سیستم ثبت کاربران، مدیریت محصولات و بررسی دسترسی‌ها کاربرد زیادی دارد.

جست‌وجوی یک عنصر با IndexOf

اگر علاوه بر پیدا کردن یک مقدار، به اندیس آن نیز نیاز داشته باشیم، می‌توانیم از ()IndexOf استفاده کنیم:
List<string> names = new List<string>
{
    "Ali",
    "Sara",
    "Reza"
};
int index = names.IndexOf("Reza");
Console.WriteLine(index);

خروجی:
2

اگر مقدار موردنظر در لیست وجود نداشته باشد، ()IndexOf مقدار -1 را برمی‌گرداند.

پیمایش List با حلقه for

یکی از روش‌های رایج برای نمایش تمام عناصر لیست استفاده از حلقه for است:

List<string> names = new List<string>
{
    "Ali",
    "Sara",
    "Reza"
};
for (int i = 0; i < names.Count; i++)
{
    Console.WriteLine(names[i]);
}

در اینجا به جای Length که معمولاً برای آرایه‌ها استفاده می‌شود، از Count استفاده کرده‌ایم.

پیمایش List با foreach

برای خواندن تمام عناصر لیست، foreach معمولاً ساده‌تر و خواناتر است:

foreach (string name in names)
{
    Console.WriteLine(name);
}

این روش زمانی مناسب است که فقط بخواهیم عناصر را بخوانیم و نیازی به استفاده مستقیم از اندیس نداشته باشیم.

مرتب‌سازی List در سی‌شارپ

برای مرتب کردن عناصر یک لیست می‌توان از ()Sort استفاده کرد.
برای مثال:

List<int> numbers = new List<int>
{
    50,
    10,
    30,
    20,
    40
};
numbers.Sort();

پس از مرتب‌سازی:

10
20
30
40
50

برای مرتب‌سازی نزولی نیز می‌توان از روش‌های مختلفی استفاده کرد؛ برای مثال:

numbers.Sort();
numbers.Reverse();



مثال کاربردی؛ مدیریت لیست محصولات

فرض کنید می‌خواهیم یک برنامه ساده برای مدیریت محصولات فروشگاه ایجاد کنیم.
ابتدا یک مدل برای محصول تعریف می‌کنیم:

class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

سپس می‌توانیم لیستی از محصولات ایجاد کنیم:

List<Product> products = new List<Product>();
products.Add(new Product
{
    Id = 1,
    Name = "Laptop",
    Price = 45000000
});
products.Add(new Product
{
    Id = 2,
    Name = "Mouse",
    Price = 1200000
});
products.Add(new Product
{
    Id = 3,
    Name = "Keyboard",
    Price = 2500000
});

اکنون متغیر products مجموعه‌ای از اشیای Product را در خود نگهداری می‌کند.

برای نمایش محصولات:
foreach (Product product in products)
{
    Console.WriteLine($"{product.Id} - {product.Name} - {product.Price}");
}

این الگو در پروژه‌های واقعی بسیار رایج است و می‌تواند پایه‌ای برای مدیریت داده‌های مختلف باشد.

استفاده از List همراه با LINQ

یکی از قابلیت‌های مهم <List<T ، امکان استفاده از آن در کنار LINQ است.
برای مثال، فرض کنید لیستی از محصولات داریم و می‌خواهیم محصولاتی را پیدا کنیم که قیمت آن‌ها بیشتر از ۲ میلیون باشد.

var expensiveProducts = products
    .Where(p => p.Price > 2000000)
    .ToList();

سپس می‌توانیم نتیجه را نمایش دهیم:

foreach (var product in expensiveProducts)
{
    Console.WriteLine(product.Name);
}

LINQ در پروژه‌های #C برای فیلتر کردن، مرتب‌سازی، انتخاب و پردازش مجموعه‌ای از داده‌ها کاربرد بسیار زیادی دارد.

تفاوت List و Array در سی‌شارپ

یکی از سؤال‌های رایج این است که چه زمانی از <List<T و چه زمانی از آرایه استفاده کنیم.


ویژگی  <List<T  Array
اندازه   پویا ثابت
افزودن عنصر ساده   نیازمند ایجاد آرایه جدید
حذف عنصر دارای متدهای آماده    مستقیم نیست
دسترسی با اندیس    دارد  دارد
Count   دارد     ندارد
Length ندارد  دارد
LINQ  پشتیبانی می‌شود  پشتیبانی می‌شود
مناسب برای داده‌های پویا بسیار مناسب  محدودتر

      
اگر تعداد عناصر از ابتدا مشخص و ثابت باشد، آرایه می‌تواند انتخاب مناسبی باشد.
اما اگر تعداد داده‌ها در طول اجرای برنامه تغییر کند، <List<T معمولاً انعطاف بیشتری دارد.


تفاوت List و Array در سی‌شارپ

جمع‌بندی

<List<T در سی‌شارپ یکی از مهم‌ترین و پرکاربردترین مجموعه‌ها برای نگهداری داده‌های پویا است.
برخلاف آرایه که اندازه آن پس از ایجاد ثابت می‌ماند، لیست امکان اضافه کردن، حذف کردن و مدیریت عناصر را در زمان اجرای برنامه فراهم می‌کند.
متدهایی مانند ()Add()، AddRange()، Remove()، RemoveAt()، Clear()، Contains و ()Sort بسیاری از عملیات متداول روی داده‌ها را ساده می‌کنند.
همچنین امکان استفاده از LINQ در کنار <List<T باعث شده این ساختار در پروژه‌های واقعی #C کاربرد گسترده‌ای داشته باشد.
اگر با برنامه‌نویسی #C کار می‌کنید، یادگیری درست List<T> یکی از مباحث پایه‌ای و مهم برای کار با مجموعه داده‌هاست و در پروژه‌هایی مانند مدیریت کاربران، فروشگاه اینترنتی، سیستم‌های آموزشی، حسابداری، مدیریت محصولات و بسیاری از برنامه‌های دیگر به‌طور مداوم با آن روبه‌رو خواهید شد.

محصولات مرتبط

کاربران ما

شما هم نظرتون با ما دریاره “لیست در سی‌شارپ” اشتراک بزارید

برای ارسال نظر لطفا ورود یا ثبت نام کنید

منو