امکانات نامحدود تاپل ها در 7 #C

چهارشنبه 3 آذر 1395

توسعه دهندگان به صورت روزانه از تاپل ها استفاده میکنند اما کاربرد آنها متفاوت است.با آخرین نسخه آتی از c# ,تاپل ها ممکن است تغییر کنند و قدرت زیادی بگیرند و شما آن ها را در دنیای واقعی مانند بازی ببینید.

امکانات نامحدود تاپل ها در 7 #C

تاپل چیست؟

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

 برای مثال شما می توانید یک کلاس جهت ذخیره شهر و موقعیت ایجاد کنید.

public class Location  
{
     public string City { get; set; }
     public string State { get; set; }

     public Location(string city, string state)
     {
           City = city;
           State = state;
     }
}

// Example
var location = new Location("Lake Charles","LA");  
// Print out the address
var address = $"{location.City}, {location.State}"; 

شما همین کار را با تاپل هم می توانید انجام دهید اگرچه شما با وضوح زیاد و تو صیف کمی این کار را می توانید انجام دهید.

var location = new Tuple<string,string>("Lake Charles","LA");  
// Print out the address
var address = $"{location.Item1}, {location.Item2}";  

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

چه چیز جدید با تاپل ها در C# وجود دارد؟

در C# یک ویژگی جدید برای توسعه دهندگان معرفی شده است و آن بازگشت به ارزش های متعدد است.

شما اکنون می توانید مانند زیر بدون ایجاد کلاس با استفاده از تاپل ها با یکسری از رفرنس ها و پارامترهای خارجی تعریف کنید.

public (string city, string state) GetCityAndState()  
{
    return ("Lake Charles","Louisiana");
}

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

var result = GetCityAndState();  
var city = result.city;  // yields "Lake Charles"  
var state = result.state // yields "Louisiana"  

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

// Using two explicitly defined return values
(string city, string state) = GetCityAndState();
// Using var as opposed to explicit type definitions
(var city, var state) = GetCityAndState();
// Using a single var declaration for multiple variables
var (city, state) = GetCityAndState();  
// Using existing variables
(city,state) = GetCityAndState();

مقدار دهی اولیه به صورت زیر است

var location = ("Lake Charles", "Louisiana"); 

این ویژگی را زبان های برنامه نویسی محبوب دیگری مانند Python, Scala, Ruby دارا می باشند.

چیز دیگری مد نظر دارید؟

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

public (string city, int population) FindBiggestCityWithPopulation(string state)  
{
    var result = (city: "", population: 0);
    result.city = _someService.GetBiggestCity(state);
    result.population = _someService.GetPopulation(result.city);
    return result;
}

به همین ترتیب این تاپل از الگوهای async/await  پشتیبانی می کند. 

public async Task(string bird, string flower) GetStateBirdAndFlowerAsync(string state)  
{
    var bird = await _someService.GetStateBirdAsync(state);
    var flower = await _someService.GetStateFlower(state);
    return (bird,flower);
}

آموزش سی شارپ

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 1k بازدید
  • 10 تشکر

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید