استفاده از چندتایی ها(tuple) در سی شارپ
فنون زیادی برای برگرداندن چندین مقدار از یک تابع وجود دارد. بعنوان مثال، می توانیم کلمه ی کلیدی out و struct یا array که قبلا توضیح داده شده اند یا از طریق یک کلاس که بعداً در این فصل، شرح داده خواهد شد، استفاده کنیم. با استفاده از کلمه ی کلیدی out به هدف برگرداندن چندین مقدار از یک تابع می رسیم اما با انجام این کار، از این خاصیت به روشی خاصی که برای آن طراحی شده است استفاده نخواهد شد.
به یاد داشته باشید که از کلمه ی کلیدی out برای پاس دادن یک پارامتر با مرجع(by reference) بدون نیاز به مقداردهی اولیه کردن آن در ابتدا، استفاده می شود. ساختارها(Structs)، آرایه ها(arrays) و کلاس ها(class) نیز گزینه های معتبری هستند اما نیاز به مقداری کد اضافی برای ایجاد، مقداردهی اولیه(initialize) و قرائت(read) دارند.
از طرف دیگر، استفاده از یک چندتایی(tuple)، یک روش بسیار زیبا برای دست یابی به این هدف با مخارج(overhead) کم است. چونکه tuple یک روش راحت و مستقیم برای برگرداندن بیش از یک مقدار تکی از یک تابع ارائه می دهد، وقتی بیشترین فایده را دارد که یک برنامه نیازی به یک struct یا پیادهسازیهای پیچیده تر نداشته باشد. به چندتایی(tuple) ساده ی زیر توجه کنید:
var numbers = (1, 2, 3, 4, 5);
کد بالا یک چندتایی(tuple) ایجاد می کند که نام آن numbers است و حاوی عضوهای Item1 و Item2 و Item3 و Item4 و Item5 هست که با استفاده از آنها در دسترس هستند. بعنوان مثال:
var number = numbers.Item1;
یا برای تعریف یک نام خاص به هریک از اعضا، می توانیم به طور خاص آنها را مشخص کنیم:
(int one, int two, int three, int four, int five) nums = (1, 2, 3, 4, 5);
int first = nums.one;
تعریف یک متد به صورت زیر است:
private static (int max, int min, double average)
GetMaxMin(IEnumerable<int> numbers)
{
return (Enumerable.Max(numbers),
Enumerable.Min(numbers),
Enumerable.Average(numbers));
}
سپس، با استفاده از یک اپلیکیشن ساده ی کنسول، این کدها را اجرا می کنیم:
static void Main(string[] args)
{
IEnumerable<int> numbers = new int[] { 1, 2, 3, 4, 5, 6 };
var result = GetMaxMin(numbers);
WriteLine($"Max number is {result.max}, " + $"Min number is {result.min}, " + $"Average is {result.average}");
ReadLine();
}
نتیجه یا خروجی، در تصویر 6.4 نشان داده شده است:
(تصویر 6.4)

نکته: در فصل 10 "تعریف اعضای کلاس ها" که ایجاد یک کلاس و اعضای آن معرفی شد، مثالی در مورد ساختار شکنی(deconstruction) از یک tuple خواهیم زد. برای اینکه این مفهوم را کاملاً متوجه شویم، نیاز داریم برخی از اصول کلاس ها را درک کنیم، بنابراین در فصل مذکور، مبحث tuple ها را دنبال کنید.
- بازدید: 40
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.