07
مهتاپل ها (Tuple) ساختار هایی سبک و انعطاف پذیر هستند که به برنامه نویسان اجازه می دهند چند مقدار را بدون نیاز به تعریف یک کلاس یا ساختار جدید ، در قالب یک واحد منطقی گروهبندی کنند . در زبان سی شارپ از نسخه 7.0 به بعد استفاده از تاپل ها بسیار ساده تر و پیشرفته تر شده است در این مقاله با نحوه تعریف ، مقدار دهی ، دسترسی ، استفاده در توابع و تفاوت آنها با سایر ساختار ها آشنا می شوید
تاپل یک ساختار داده است که می تواند چندین مقدار از انواع مختلف را در یک متغیر ذخیره کند . برای مثال اگر بخواهید یک نام و سن را با هم ذخیره کنید ، می توانید از یک تاپل استفاده کنید :
var person = (“Ali” , 30) ;
در اینجا person یک تاپل دو عضوی از نوع ( string , int ) است
قبل از نسخه 7.0 استفاده از تاپل نیاز به استفاده از
Tuple< T1 , T2 , … >
داشت . اما از نسخه c# 7.0 به بعد می توان تاپل هارا با سینتکس ساده تر و راحت تر نوشت .
(string , int) person = (“Ali” , 30) ;
Console.WriteLine(person.Item1) ; خروجی Ali
Console.WriteLine(person.Item2) ; خروجی 30
یا به صورت :
var person = ( Name : “Ali” , Age : 30 ) ;
Console.WriteLine(person.Name)
بازگرداندن چند مقدار از یک متد :
( string Name , int Age ) GetPersonInfo()
{
return ( “Sara” , 25 ) ;
}
var person = GetPersonInfo() ;
Console.WriteLine( person.Name ) ; خروجی Sara
void PrintPerson ((string Name , int Age) person)
{
Console.WriteLine($”Name : {person.Name} , Age : {person.Age}”) ;
}
تاپل برای موارد موقتی و ساده طراحی شده است مثلا وقتی فقط برای چند خط کد نیاز داریم دو یا سه مقدار کنار هم باشند. اما کلاس ها و struct ها برای ساخت مدل های داده ای دقیق ، قابل توسعه و قابل استفاده در طول برنامه کاربرد دارند
در کلاس یا ساختار اعضا دارای نام های مشخص هستند که شما تعیین می کنید ، در حالیکه در تاپل اعضا با نام های Item1 , Item2 و … شناخته میشوند که ممکن است خوانایی کد را کاهش دهد ( مگر اینکه برنامه نویس نام گذاری کند )
کلاس ها و ساختار هاقابلیت افزودن متد ، سازنده ، ویژگی ( property ) و … را دارند . ولی تاپل فقط شامل مقادیر است و هیچ گونه منطق یا عملکردی ندارد.
در پروژه های بزرگ استفاده زیاد از تاپل میتواند باعث گمراهی و کاهش خوانایی شود چون مشخص نیست هر مقدار چه معنایی دارد اما کلاس و struct با نام گذاری درست باعث میشوند کد واضح تر و قابل نگهداری تر باشد
از نظر عملکرد تاپل های جدید ( ValueTuple ) بسیار سبک و سریع هستند و مشابه Struct رفتار میکنند اما کلاس ها چون برپایه مرجع ( refrence ) هستند ، رفتار متفاوتی از نظر حافظه دارند
می توان از تاپل برای بازگرداندن چند مقدار در query های LINQ استفاده کرد :
var people = new[] { “Ali” , “Sara” , “Reza” } ;
var resault = people.Select ( p => ( Name : p . Length : p.Length ) ) ;
foreach ( var person in resault )
{
Console.Write( $ ” { person.Name } has { person.Length } characters . ” )
}
تاپل ها برای داده های موقتی عالی اند ، ولی برای پروژه های بزرگ ، استفاده بیش از حد ممکن است باعث کاهش خوانایی کد شود .
در برخی موارد برای انتقال داده بین کلاس ها یا لایه های برنامه استفاده از DTO یا کلاس مناسب تر است .
تاپل ها از System.ValueTuple استفاده می کنند که باید در برخی نسخه های قدیمی تر .NET به صورت دستی به پروژه اضافه شوند
تاپل ها در سی شارپ ابزاری بسیار مفید و ساده برای ذخیره و انتقال چند مقدار باهم هستند. با یادگیری نحوه ی استفاده ی صحیح از آنها می توانید کد هایی خواناتر و کوتاه تر بنویسید به ویژه در متد هایی که نیاز به بازگرداندن چند مقدار دارند ، تاپل ها راه حل مناسبی هستند.
در خبرنامه ما مشترک شوید و آخرین اخبار و به روزرسانی های را در صندوق ورودی خود مستقیماً دریافت کنید.
دیدگاه بگذارید