با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش #C در خدمت شما دوستان هستیم . در بخش قبلی با Tuple در #C آشنا شدید ، در این بخش قصد داریم شما را با ValueTuple در زبان #C نیز آشنا کنیم. تا پایان این جلسه همراه ما باشید.
C # 7.0 (دات نت فریم ورک ۴٫۷) ValueTuple را معرفی کرد، ساختاری است که نمایانگر مقدار نوع Tuple است.
ValueTuple تنها در دات نت فریم ورک ۴٫۷ در دسترس است. اگر ValueTuple را در پروژه خود مشاهده نمی کنید، باید آن را نصب کنید. (دات نت فریم ورک ۴٫۷ یا بالاتر و NET Standard Library 2.0. یا بالاتر در حال حاضر شامل ValueTuple هستند.).
برای نصب بسته ValueTuple، بر روی پروژه در solution explorer کلیک راست کرده و Manage NuGet Packages را انتخاب کنید ، سپس از پنجره باز شده روی برگه Browse کلیک کنید، ValueTuple را در کادر جستجو وارد کنید و پکیج System.ValueTuple را انتخاب کنید، همانطور که در زیر نشان داده شده است.
تعریف و مقداردهی اولیه ValueTuple بسیار ساده و راحت است. می توانید با استفاده از پرانتز () و تعیین مقادیر بین آنها ValueTuple تعریف و مقداردهی اولیه کنید.
1 2 3 4 | var person = (1, "Bill", "Gates"); //نسخه قبلی Tuple //var person = Tuple.Create(1, "Bill", "Gates"); |
ValueTable همچنین می تواند با مشخص کردن نوع هر عنصر، به صورت زیر نشان داده شود.
1 2 3 4 | ValueTuple<int, string,string> person = (1, "Bill", "Gates"); person.Item1; // returns 1 person.Item2; // returns "Bill" person.Item3; // returns "Gates" |
در مثال زیر یک شیوه کوتاه تر برای اعلام نوع داده ها برای هر عنصر نیز بیان شده است.
1 2 3 4 | (int, string, string) person = (1, "Bill", "Gates"); person.Item1; // returns 1 person.Item2; // returns "Bill" person.Item3; // returns "Gates" |
1 2 | var number = (1); // نیست tuple var numbers = (1,2); // است tuple |
1 | var numbers = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14); |
ما می توانیم به جای داشتن نام های پیش فرض Item1, Item2 و … به عناصر Tuple نام های جدید اختصاص دهیم.
1 2 3 4 | (int Id, string FirstName, string LastName) person = ("Bill", "Gates", 60); person.Id; // returns 1 person.FirstName; // returns "Bill" person.LastName; // returns "Gates" |
همچنین می توانیم نامهای مانند مثال زیر نیز تعیین کنیم.
1 | var person = (Id:1, FirstName:"Bill", LastName: "Gates"); |
لطفا توجه داشته باشید که می توانیم نام اعضا را در سمت چپ یا در سمت راست، اما نه در دو طرف، وارد کنیم.
1 2 3 4 | (int Id, string FirstName, string LastName) person = (PersonId:1, FName:"Bill", LName: "Gates"); // PersonId, FirstName, LastName will be ignored. It will have the default names: Item1, Item2, Item3. (string, string, int) person = (PersonId:1, FName:"Bill", LName: "Gates"); |
ما همچنین می توانیم متغیرها را به عنوان مقدارهای عناصر اختصاص دهیم.
1 2 | string firstName = "Bill", lastName = "Gates"; var per = (FirstName: firstName, LastName: lastName); |
متد زیر یک ValueTuple پارامتر گرفته و یک ValueTuple دیگر را به عنوان خروجی باز می گرداند.
1 2 3 4 5 6 7 8 9 10 11 | static void Main(string[] args) { DisplayTuple(1, "Bill", "Gates"); } static void DisplayTuple((int, string, string) person) { Console.WriteLine($"Id = { person.Item1}"); Console.WriteLine($"First Name = { person.Item2}"); Console.WriteLine($"Last Name = { person.Item3}"); } |
ما همچنین می توانیم نامهای مختلف عناصر را برای یک ValueTuple که از یک متد بازگشت داده می شود مشخص کنیم.
1 2 3 4 5 6 7 8 9 | static void Main(string[] args) { var person = GetPerson(); } static (int, string, string) GetPerson() { return (Id:1, FirstName: "Bill", LastName: "Gates"); } |
عناصر یک ValueTuple را می توان با استفاده از deconstructing بازیابی کرد. یک ساختار deconstructing متغیر ValueTuple را به قطعاتی تقسیم می کند و آن ها را به صورت جداگانه به متغیرهای جدید اختصاص می دهد.
1 2 3 4 5 6 7 8 9 | static void Main(string[] args) { // change property names (int PersonId, string FName, string LName) person = GetPerson(); } static (int, string, string) GetPerson() { return (Id:1, FirstName: "Bill", LastName: "Gates"); } |
ما همچنین می توانیم به جای نوع داده از کلمه کلیدی var استفاده کنیم.
1 2 3 4 5 6 7 8 9 | static void Main(string[] args) { // use var as datatype (var PersonId, var FName, var LName) person = GetPerson(); } static (int, string, string) GetPerson() { return (Id:1, FirstName: "Bill", LastName: "Gates"); } |
ValueTuple همچنین اجازه می دهد تا از “discards” را برای عناصری که نمی خواهید استفاده کنید ، بکار ببرید.
1 2 | // علامت _ (discard) برای عناصری که نمیخواهید استفاده کنید بکار ببرید (var id, var FName, _) = GetPerson(); |
در این قسمت (قسمت پایانی) از دوره کامل آموزش #C به معرفی ValueTuple در این زبان پرداختیم .
زبان برنامه نویسی #C یکی از زبان های بسیار قدرتمند و پایه برای یادگیری ASP.NET می باشد ، شما با مطالعه این دوره و دوره کامل آموزش ASP.NET Core که جدیدترین نسخه از ASP.NET است، میتوانید یک برنامه نویس حرفه ای وب شوید.