نحوه استفاده از Collections (کالکشن ها) در سی شارپ

در دروس قبل نحوه استفاده از آرایه برای ذخیره سازی اطلاعات مورد نیاز برنامه آموزش داده شد. آرایه امکان مناسبی در زبان برنامه نویسی سی شارپ است اما دارای محدودیت هایی مانند طول ثابت می باشد. شرکت مایکروسافت برای توسعه بهتر نرم افزارها،  Collectionها را به مجموعه دات نت اضافه نمود. Collectionها در اصل Genericهایی می باشد که برای کار با مجموعه اطلاعات مورد استفاده قرار می گیرند. هر کلاس Collection به شکل ویژه ای برای ذخیره سازی و دسترسی به اطلاعات طراحی شده است.

نحوه استفاده

برای استفاده از Collectionها ابتدا می بایست namespace (فضای کاری) زیر را به برنامه خود اضافه کنید.

System.Collections.Generic;

پس از افزودن این namespace امکان استفاده از کلاس های مربوط به آن فراهم می شود که مهمترین آنها به شرح زیر می باشند:

  • List: عملکرد این کلاس همانند آرایه می باشد با این تفاوت که عملیات متنوعی نسبت به آرایه می توان بر روی آن اعمال نمود.
  • Queue: برای ایجاد مجموعه ای از اطلاعات با استفاده از الگوریتم first-in, first-out مورد استفاده قرار می گیرد.
  • Stack: برای ایجاد مجموعه ای اطلاعات با استفاده از الگوریتم first-in, last-out مورد استفاده قرار می گیرد.
  • Dictionary: برای ایجاد یک دیکشنری (زوج اطلاعات) مورد استفاده قرار می گیرد.

List

برای شروع کار با کالکشن ها یک پروژه جدیدی از نوع Console ایجاد کرده و کلاسی با نام Product به شکل زیر به آن اضافه نمایید.

class Product
{
    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public int Price { get; set; }
    private void ShowInfo()
    {
        Console.WriteLine(ProductId + ", " + ProductName + ", " + Price);
    }
}

پس از ساخت کلاس Product برای ساخت یک کالکشن به شکل زیر عمل می شود.

static void Main(string[] args)
{
    List<Product> Products = new List<Product>();
}

پس از ساخت یک کالکشن، متدهایی مختلفی برای انجام عملیات فراهم می شود که مهمترین آنها متد Add می باشد که برای افزودن یک عنصر به مجموعه مورد استفاده قرار می گیرد.

static void Main(string[] args)
{
    List<Product> products = new List<Product>();
    products.Add(new Product { ProductId = 101, ProductName = "Galaxy S10", Price = 890 });
}

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

static void Main(string[] args)
{
    List<Product> products = new List<Product>();
    products.Add(new Product { ProductId = 101, ProductName = "Galaxy S10", Price = 890 });
    products.Add(new Product { ProductId = 102, ProductName = "iPhone 8", Price = 910 });
    products.Add(new Product { ProductId = 102, ProductName = "iPhone X", Price = 1050 });
    products.Add(new Product { ProductId = 102, ProductName = "Note 10", Price = 949 });
    products.Add(new Product { ProductId = 102, ProductName = "HUAWEI P40 Pro", Price = 899 });
}

پس از ایجاد یک کالکشن می توانید با استفاده از حلقه foreach درون آن پیمایش کنید.

static void Main(string[] args)
{
    List<Product> products = new List<Product>();
    products.Add(new Product { ProductId = 101, ProductName = "Galaxy S10", Price = 890 });
    products.Add(new Product { ProductId = 102, ProductName = "iPhone 8", Price = 910 });
    products.Add(new Product { ProductId = 102, ProductName = "iPhone X", Price = 1050 });
    products.Add(new Product { ProductId = 102, ProductName = "Note 10", Price = 949 });
    products.Add(new Product { ProductId = 102, ProductName = "HUAWEI P40 Pro", Price = 899 });
    foreach (var item in products)
    {
        item.ShowInfo();
    }
    Console.ReadLine();
}

Dictionary

دیکشنری یکی دیگر از کلاس های موجود در فضای کاری System.Collection.Generics می باشد که برای ذخیره سازی اطلاعات بصورت key/value مورد استفاده قرار می گیرد و نحوه استفاده از آن به شکل زیر می باشد:

Dictionary<TKey, TValue> cities = new Dictionary<TKey, TValue>();

بجای TKey و TValue می بایست از نوع داده هایی مانند int, string و ... استفاده نمایید. برای مثال اگر قصد داشته باشید یک دیکشنری از نام استان ها به همراه کد آنها داشته باشید به شکل زیر خواهد بود.

Dictionary<string, string> codes = new Dictionary<string, string>();

برای افزودن اطلاعات به دیکشنری نیز می توانید از متد Add استفاده نمایید.

Dictionary<string, string> codes = new Dictionary<string, string>();
codes.Add("021", "Tehran");
codes.Add("025", "Qom");
codes.Add("026", "Alborz");
codes.Add("031", "Esfahan");
codes.Add("045", "Ardebil");
codes.Add("071", "Fars");

همانند مثال قبل برای نمایش اطلاعات درون دیکشنری نیز می توانید از حلقه foreach استفاده نمایید.

foreach (var item in codes)
{
    Console.WriteLine(item.Key + " - " + item.Value);
}

استفاده از کالکشن ها کاربرد بسیار زیادی در ساخت برنامه هایی که با پایگاه داده در ارتباط هستند دارد همچنین علاوه بر عملیات های درج و نمایش، عملیات های دیگری مانند ویرایش، حذف، مرتب سازی و ... را نیز می توان بر روی آنها انجام داد اما برای انجام تمرینات بیشتر می بایست مقاله بعدی را که در مورد زبان کوئری نویسی LINQ می باشد مطالعه نمایید.