DigiKala Ads
متفاوت ترین مجله اینترنتی ...

آموزش سی‌شارپ C# – بخش ۴۴

12345 (بدون نظر)
Loading...
13
  • مقدمه

تا کنون، با مفاهیمی مثل آرایه و List<> آشنا شده‌اید، اما آیا به این مورد فکر کرده‌اید که در مواردی که ما در برنامه خود یک آرایه یا List<> تعریف می‌کنیم، تنها می‌توانیم در آن‌ها مقادیری اضافه کنیم که از همان جنس باشد؟ یعنی اگر آرایه یا لیستی از نوع string تعریف کنیم، تنها خواهیم توانست که مقادیری از جنس String به آن‌ها اضافه کنیم.

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

  • آشنایی و استفاده از Hashtable

ما زمانی از Hashtableها استفاده می‌کنیم که می‌خواهیم آیتم‌هایی را به مجموعه‌ی خود اضافه کنیم که براساس کلید/مقدار باشند. شاید برایتان کمی مفهوم کلید/مقدار (Key/Value) ناآشنا باشد، پس با یک مثال با هم جلو می‌رویم.

برای مثال، نام یک دانش‌آموز و نمره‌ی او در امتحان. در واقع شما می‌توانید چنین مقادیری را در Hashtable اضافه کنید؛ یعنی می‌توانید نوع string و int را با همدیگر مخلوط کنید.

به فرمی که در جلسه پیش ساخته‌ایم، یک Button اضافه کنید؛ بر روی آن دابل کلیک کنید. ابتدا به قسمت بالای کدها (بخش Usingها) دقت کنید. توجه داشته باشید که برای استفاده از Hashtable، می‌بایست از Using زیر استفاده کنید:

using System.Collections;

شما تا الان عبارت System.Collections.Generic را داشته‌اید، اما Hashtable جزو این namespace نیست، بلکه جزو namespace با نام Collections می‌باشد.

در داخل بخش کدنویسی مربوط به Button جدید خود، با استفاده از کد زیر یک Hashtable تعریف کنید:

Hashtable students = new Hashtable();

با استفاده از کد بالا، شما شی‌ءای با نام Students از نوع Hashtable تعریف می‌کنید. برای اینکه به این Hashtable مقدار بدهید (آیتم‌هایی را به آن اضافه کنید)، شما دو راه پیش رو خواهید داشت. یعنی در واقع اینکار به دو روش انجام می‌شود.

راه اول:

students[“Jenny”] = 87;

students[“Peter”] = “No Score”;

students[“Mary Jane”] = 64;

students[“Azhar”] = 79;

راه دوم:

students.Add(“Jenny”, 87);

students.Add(“Peter”, “No Score”);

students.Add(“Mary Jane”, 64);

students.Add(“Azhar”, 79);

کارهایی که در کدهای بالا در حال انجام است کاملاً مشخص است؛ نام دانش‌آموز در ابتدا قرار می‌گیرد و در مقابل آن نمره‌ی مربوط به امتحان او وارد می‌شود.

اما باید به نکته‌ای توجه کنید؛ در روش اول، اگر دو نام متشابه با مقادیر متفاوت داشته باشید، مشکلی برایتان بوجود نخواهد آمد، اما در روش دوم، کامپایلر از شما خطا می‌گیرد. به مثال زیر دقت کنید:

کد غلط:

students.Add(“Jenny”, 87);

students.Add(“Jenny”, 35);

کد درست:

students[“Jenny”] = 87;

students[“Jenny”] = 35;

برای اینکه خودتان نیز در این پروژه کار با Hashtableها را امتحان کنید، کدهای زیر را قرار دهید:

Hashtable students = new Hashtable();

students[“Jenny”] = 87;

students[“Peter”] = “No Score”;

students[“Mary Jane”] = 64;

students[“Azhar”] = 79;

foreach (DictionaryEntry child in students)

{

              listBox1.Items.Add(“student: “ + child.Key + “ ,Score: “ + child.Value);

}

پیش از آن‌که کدهای بالا را اجرا کنید، به عبارت زیر دقت کنید:

DictionaryEntry child

در سی‌شارپ، در هنگامی که از حلقه foreach برای Hashtableها استفاده می‌کنید، می‌بایست که از نوع داده DictionaryEntry استفاده کنید؛ به این دلیل است که این نوع داده می‌تواند همزمان هم Key را به ما برگرداند و هم Value را.

به عبارت‌های child.Key و child.Value نیز دقت کنید؛ این‌ها همان Key/Valueهایی هستند که می‌توانید بصورت مستقیم به آن‌ها دسترسی پیدا کنید؛ که ما در اینجا برای نمایش نام دانش‌آموز و نمره‌ی او در ListBox، مجبور شدیم که از آن‌ها استفاده کنیم.

نرم‌افزار خود را اجرا کنید؛ باید شاهد چنین نتیجه‌ای باشید:

hashtable_form

درضمن توجه داشته باشد که در Hashtableها نیز همانند لیست‌ها می‌توانید مقادیری را اضافه و حذف نمایید. برای حذف باید از Key استفاده کنید و بدین شکل حذف کنید:

students.Remove(“Peter”);

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

ممکن است به این مطالب نیز علاقمند باشید
13 دیدگاه
  1. احسان می‌گوید

    سلام واقعا ساده وروان توضیح دادید مرسی

  2. novid66843 می‌گوید

    موسوی جان خسته نباشی خدا قوت
    دستت درد نکنه ممنون

  3. majid می‌گوید

    سلام برادر
    قسمت 42 . 43 فایل پی دی اف یادتون رفت !!!

    1. Jeff Mosawy می‌گوید

      سلام دوست عزیزم،

      بله در جریان هستم؛ انشاءالله تا آخر امشب تمامی بخش‌ها در صورتی که فایل PDF آن‌ها وجود نداشته باشد در دسترس عموم قرار خواهد گرفت.
      با آرزوی موفقیت.

  4. majid می‌گوید

    سلامی دوباره
    درخواست گرامر و معانی دستورات در سی شارپ که بتونم بشتر آشنا بشوم به کجا مراجعه کنم؟

    1. Jeff Mosawy می‌گوید

      سلام دوست عزیزم،

      می‌تونید به کتب مرجع سی شارپ مراجعه کنید.
      موفق باشید.

  5. مجید می‌گوید

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

    1. Jeff Mosawy می‌گوید

      سلام دوست عزیز،

      ممنونم از نظر لطفتون. بعید بدونم بخش شوکت رو بتونم پوشش بدم؛ اما اگر فرصتی کردم سعی خودم را خواهم کرد.
      موفق باشید!

  6. علی نوراللهی می‌گوید

    دمت گرم
    خیلی دمت گرم
    خیلی خیلی دمت گرم…

    1. Jeff Mosawy می‌گوید

      قربانت 😀

  7. novid66843 می‌گوید

    جناب موسوی عزیز اپیشنهاد می کنم یه صفحه در سایت ایجاد کنید به عنوان تقویم اموزشی ی فهرست و عنوان هر بخش با لینک ان و عنوان بخشهای بعدی اموزش که انشاالله در اینده منتشر می کنید قرار میگرفت
    بی صبرانه منتظر قسمت های بعدی هستیم
    خسته نباشی و خدا قوت کارت بینظیره

    1. Jeff Mosawy می‌گوید

      سلام عزیزم،

      ممنونم از پیشنهادت؛ در رابطه با نظرت فکرهای خودم را خواهم کرد و در آینده نتیجه را اعلام می‌کنم انشاءالله. ممنونم از توجه‌تون.
      موفق باشید!

  8. آرشام می‌گوید

    Jeff Mosawy عزیز خسته نباشی
    مرسی از سری آموزش خوبت .. منتظر پارت بعدی هستیم

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.

مقدمه تا کنون، با مفاهیمی مثل آرایه و List<> آشنا شده‌اید، اما آیا به این مورد فکر کرده‌اید که در مواردی که ما در برنامه […]