Tuple ها و کاربرد های آن در سی شارپ

Tuple ها و کاربرد های آن در سی شارپ

۲ دیدگاه

Tuple چیست؟

اغلب مواردی حین نوشتن Method ها وجود دارد که باید تابع بیش از یک مقدار برگرداند. در این شرایط گاهی می توان از Array ها استفاده کرد. (برای آشنایی با Array ها مطلب: درک Array در سی شارپ را مطالعه نمایید). ولی اگر نوع داده های برگردانده شده متفاوت باشند، Array ناکارآمد خواهد بود. همچنین استفاده از Array می تواند به افت خوانایی دستورات منجر شود. بنابراین راهکار مناسب تر می تواند ایجاد یک Data Type اختصاصی باشد. در این حالت Data Type تعریف شده اکثرا فقط برای مقدار برگردانده شده کاربرد دارد. بنابراین ما یک نوع جدید ایجاد کرده ایم که عملا در کل برنامه کارایی ندارد. برای رفع این مشکل، ساختار جدیدی در زبان سی شارپ معرفی شده است. در ادامه با معرفی Tuple ها و کاربرد های آن در سی شارپ، راهکار مناسبی برای شرایطی از این دست را خواهید آموخت.

معرفی Tuple ها و کاربرد های آن در سی شارپ

Tuple یک بسته از دو یا چند Field می باشد. عملا از Tuple برای نگهداری دیتا از آن استفاده می شود. شما می توانید به جای تعریف class یا struct برای ساختار خروجی توابع، از Tuple استفاده نمایید. (برای آشنایی با کلاس ها مطلب: Class ها در سی شارپ را مطالعه نمایید). (برای آشنایی با struct ها مطلب: struct ها در سی شارپ را مطالعه کنید). از مزایای استفاده از Tuple می توان به موارد زیر اشاره کرد:

  • نحو ساده تر برای تعریف
  • وجود قواعد تبدیل بر اساس تعداد (Cardinality) و نوع مقادیر
  • امکان تخصیص مقدار، بررسی برابری و …

این مزایا در کنار افزایش خوانایی دستورات می توانند بسیار راهگشا باشند. در عین حال شما باید از محدودیت هایی که در Tuple وجود دراد آگاه باشد. از محدودیت های موجود در Tuple ها می توان به این موارد اشاره نمود:

  • عدم پشتیبانی از برخی قواعد برنامه نویسی شیءگرا مثل Inheritance
  • عدم امکان تعریف Method درون Tuple

دقت کنید، هرگز Tuple ها نمی توانند جایگزین کاملی برای class ها و یا struct ها باشند.

انواع Tupe ها در زبان سی شارپ

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

  • Named Tuple
  • Unnamed Tuple

معرفی Named Tuple ها

به سادگی مانند هر متغییر دیگرکافی است یک متغییر از نوع Tuple تعریف کنید. در این صورت عملا یک Tuple تعریف کرده اید. برای اینکه ساختار تعریف شده Named Tuple باشد، برای هر فیلد نامی مشخص تعریف کنید. در این صورت می توانید به فیلدها از طریق نام دسترسی داشته باشید.

به مثال زیر توجه کنید:

Person (string Name, int Age, Char Gender);
Person = ( “Milad”, ۲۶, ‘M’ );

//یا

var Person = ( Name : “Milad”, Age ۲۶, Gender: ‘M’ );

//استفاده از فیلد ها پس از تعریف

Console.WriteLine($” {Person.Name} is {Person.Age} years old.”);

معرفی Unnamed Tuple ها

برای اینکه ساختار تعریف شده Unnamed Tuple باشد، لازم نیست اسمی برای فیلدها در نظر بگیرید. در این صورت برای دسترسی به فیلدها باید از اسامی پیش فرض استفاده کنید.

به مثال زیر توجه کنید:

var Person = ( “Milad”, ۲۶, ‘M’ );

//استفاده از فیلد ها پس از تعریف

Console.WriteLine($” {Person.Item1} is {Person.Item2} years old.”);

در این حالت، اسامی پیش فرض، Item1، Item2، Item3 و … خواهند بود.

برای درک بهتر روش تخصیص نام به فیلدهای Tuple مطلب: عملکرد Tuple Projection Initializer ها در دات نت را مطالعه نمایید.

از Tuple ها می توانید به عنوان:

  • نوع خروجی Method ها
  • ساختار خروجی کوئری های LINQ
    برای آشنایی با LINQ و کاربرد های آن، مطلب: معرفی LINQ و کاربردهای آن در سی شارپ را مطالعه نمایید
  • پارامتر out در Method ها
    برای آشنایی با انواع پارامتر ها مطلب: انواع پارامترها در سی شارپ را مطالعه نمایید
  • و …

استفاده کرد

آواتار کاربر

شهاب ساری اصلانی

از سال 1385 به صورت جدی مشغول تدریس در حوزه های برنامه نویسی دات نت و طراحی بانک های اطلاعاتی بوده ام. تدریس به عنوان یک حرفه همیشه برایم جذاب بوده و یادگیری جدیدترین مباحث لذت بخش است.

۲ دیدگاه

  1. دی ۲۵, ۱۴۰۰

    ممنون از توضیح کاملتون🙏🌹

    • آواتار کاربر
      بهمن ۹, ۱۴۰۰

      درود بر شما. خواهش میکنم

ارسال یک دیدگاه

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