دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۵
  • مرداد

جلسه ۴۰ : مجموعه عمومی Dictionary در #C

  • دسته‌بندی‌ها :
جلسه ۴۰ : مجموعه عمومی Dictionary در #C
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه :

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با
       دوره کامل آموزش
      #C
       در خدمت شما دوستان هستیم . در بخش قبلی با نوعی از مجموعه
      های عمومی (Generic) در
      #C
      به نام SortedList آشنا شدید Dictionary در #C همان فرهنگ لغت انگلیسی است. فرهنگ لغت انگلیسی مجموعه ای از کلمات و تعاریف آنها است که  ، در این بخش نیز قصد داریم شما را با نوعی دیگر از این مجموعه ها به نام
      مجموعه عمومی Dictionary در #C و متدهای ContainsKey و Contains در سی شارپ آشنا کنیم.

      اغلب به ترتیب حروف الفبا در یک یا چند زبان خاص قرار می گیرند. دیکشنری در #C  نیز مجموعه ای از کلید ها و مقادیر است، بطوریکه کلید مانند کلمه است و مقدار مانند معنی است.

      Dictionary یک مجموعه ی عمومی است که در فضای نام System.Collection.Generics موجود است. TKey نوع کلید و TValue نوع مقدار را نشان می دهند.

       

      تعریف و مقداردهی اولیه :

      یک Dictionary را می توان با یک متغیر از رابط IDictionary و یا با یک کلاس Dictionary تعریف و مقداردهی اولیه کرد:

      مثال : 

      در مثال فوق، در هنگام اعلام یک شیء dictionary ، نوع داده کلید و مقدار مشخص شده است. int نوع داده کلید و String نوعی داده مقدار است که در یک شیء dictionary به نام dict ذخیره می شوند. شما می توانید از هر نوع داده معتبر در #C برای کلید ها و مقادیر استفاده کنید.

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

      نکته
      :
      Dictionary نمیتواند شامل کلیدهای تکراری یا Null باشد، درحالیکه مقادیر میتوانند تکرار شود یا به صورت null تنظیم شود. کلید باید منحصر به فرد باشد در غیر اینصورت استثناء زمان اجرا برگشت داده خواهد شد.

       

      پراپرتی های مهم :

      توضیحاتپراپرتی
      تعداد کل عناصر موجود در Dictionary را برمی گرداند.Count
      یک مقدار منطقی را برمی گرداند که نشان می دهد آیا Dictionary فقط خواندنی است یا خیر.IsReadOnly
      مقدار عنصری را با کلید مشخص شده در Dictionary تنظیم می کند و یا آن را برمیگرداند.Item
      بازگشت مجموعه کلید ها از Dictionary.Keys
      بازگشت مجموعه مقادیر از Dictionary.Values

       

      متدهای مهم :

      توضیحاتمتد
      1. Add(item) یک مورد مشخص را به مجموعه Dictionary اضافه می کند.
      2. Add(key-value pairs) یک جفت کلید-مقدار را بوسیله KeyValuePair به مجموعه اضافه می کند.
      Add
      1. Remove(key) عناصر دارای کلید مشخص را از Dictionary حذف می کند.
      2. (Remove(KeyValuePair عنصر را با KeyValuePair مشخص حذف می کند.
      Remove
       چک میکند که آیا کلید مشخص شده در Dictionary وجود دارد یا خیر.ContainsKey
        چک میکند که آیا مقدار مشخص شده در Dictionary وجود دارد یا خیر.ContainsValue
       تمامی عناصر را از Dictionary حذف می کند.Clear
      اگر مقدار مشخص شده در فهرست کلیدهای آرایه Dictionary وجود داشته باشد true را برگردانده
      و مقدار را با کلید مشخص شده اختصاص می دهد، و اگر وجود نداشته باشد false را برمیگرداند.
      TryGetValue

       

      متد Add :

      از این متد برای اضافه کردن جفت کلید-مقدار در dictionary استفاده می شود.

      ساختار کلی :

      void Add(TKey, Tvalue)

      مثال : 

      نمونه نوع IDictionary دارای یک overload اضافی برای متد Add است. که یک KeyValuePair <TKey، TValue> struct را به عنوان پارامتر می پذیرد.

      مثال : 

      همچنین می توان هنگام تعریف کردن Dictionary مقداردهی اولیه را نیز انجام داد.

      مثال : 

       

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

      عناصر Dictionary را می توان با متدهای مختلف ازجمله foreach  و یا indexer مشاهده کرد.

      همچنین میتوان از foreach به تمام عناصر Dictionary دسترسی پیدا کرد. Dictionary جفت کلید-مقدار را ذخیره می کند. بنابراین شما می توانید از نوع KeyValuePair در حلقه foreach استفاده کنید، همانطور که در زیر نشان داده شده است.

      مثال : 

      حلقه for :

      حلقه for :

      مثال : 

      خروجی :

      مثال : 

      میتوانیم از طریق کلید عنصر به مقدارش دسترسی داشته باشیم مانند زیر :

      مثال : 

      خروجی :

      مثال : 

      در این روش Indexer کلید را به عنوان یک پارامتر می گیرد. اگر کلید مشخص شده وجود نداشته باشد، استثناء
      KeyNotFoundException برگردانده می شود.

      اگر شما در مورد کلید اطمینان ندارید، از متد TryGetValue استفاده کنید. متد TryGetValue اگر نتواند کلیدی را
      پیدا کند، مقدار false را برگشت خواهد داد.

      ساختار کلی :

      bool TryGetValue(TKey key, out TValue value)

      مثال : 

      خروجی :

      مثال : 

       

      متدهای ContainsKey و Contains :

      Dictionary شامل متدهای مختلف برای تعیین اینکه آیا یک Dictionary شامل عناصر یا کلید های مشخص شده است یا خیر. از
      متد ContainsKey برای بررسی اینکه آیا یک کلید مشخص شده در Dictionary وجود دارد یا خیر، استفاده میکنیم.

      از متد Contains نیز برای بررسی اینکه آیا یک عنصر مشخص در Dictionary وجود دارد یا خیر ، استفاده می کنیم.

      ساختار کلی :

      bool ContainsKey(TKey key)

      bool Contains(KeyValuePair<TKey, TValue> item)

      مثال : 

      متد Contains دارای overload دیگری نیز است که IEqualityComperer را به عنوان پارامتر دوم می گیرد. به مثال زیر دقت
      کنید :

      مثال : 

      خروجی :

      مثال : 

      در مثال بالا از StudentDictionaryComparer استفاده کرده ایم که IEqualityComparer را برای مقایسه شی دانش آموز در
      Dictionary می گیرد. مقادیر پیش فرض فقط به انواع داده اولیه کار می کنند.

       

      متد Remove :

      از این متد برای حذف یک آیتم موجود در dictionary استفاده می کنیم . متد Remove دارای دو overload است، در یکی کلید را
      می پذیرد و در یکی دیگر KeyValuePair را به عنوان پارامتر قبول می کند.

      ساختار کلی :

      • bool Remove(TKey key)
      • bool Remove(KeyValuePair<TKey,TValue>)

      مثال : 

      هر کلید و مقدار باید برای حذف یک مورد مطابقت داشته باشد. اگر هر دو با هم همخوانی نداشته باشند، مورد حذف نخواهند شد.
      به عنوان مثال، مثال زیر هیچ موردی را حذف نمی کند:

      مثال : 

       

      چند نکته جهت به خاطر سپردن :

      1. یک دیکشنری جفت کلید-مقدار را ذخیره میکند و کلید باید منحصر به فرد باشد.
      2. قبل از اضافه کردن KeyValuePair به یک dictionary ، وجود داشتن کلید را با متد ContainsKey بررسی کنید.
      3. از متد TryGetValue جهت اطمینان از وجود یک کلید استفاده کنید تا از بروز استثناء های زمان اجرا اجتناب کنید.
      4. برای دسترسی به تمام عناصر dictionary میتوانید از حلقه foreach استفاده کنید.
      5. برای دسترسی به عناصر یک dictionary میتوانید از مقدار کلید هر عنصر بعنوان شماره ایندکس استفاده کنید.
      6. میتوانید از کلاس سفارشی استفاده کنید که IEqualityComparer را برای مقایسه شی از کلاس سفارشی با متد Contains
        استفاده کنید.

      در این بخش با مجموعه عمومی dictionary زبان #C آشنا شدید ، در بخش بعدی قصد داریم در رابطه با Partial Class در این
      زبان صحبت کنیم.

      QR:  جلسه ۴۰ : مجموعه عمومی Dictionary در #C
      به اشتراک بگذارید