ویژگیهای جدید C# 7.0
تاریخ انتشار: مارس 2017
نسخه 7.0 زبان برنامهنویسی C# همزمان با انتشار Visual Studio 2017 عرضه شد و مجموعهای از قابلیتهای جذاب و انقلابی را به همراه آورد. این ویژگیها به توسعهدهندگان اجازه میدهد تا کدهایی سادهتر، تمیزتر و مؤثرتر بنویسند. در این مقاله به طور کامل با ویژگیهای جدید این نسخه آشنا میشویم.
متغیرهای Out (Out Variables)
در نسخههای قبلی C#، برای استفاده از متغیرهایی که به صورت out
در متدها استفاده میشوند، نیاز بود ابتدا آنها را تعریف کنید. اما در C# 7.0 میتوانید این متغیرها را به صورت مستقیم در زمان فراخوانی متد تعریف کنید.
قبل از C# 7.0:
int result;
if (int.TryParse("123", out result))
{
Console.WriteLine(result);
}
در C# 7.0:
if (int.TryParse("123", out int result))
{
Console.WriteLine(result);
}
این قابلیت کدنویسی را تمیزتر و مختصرتر میکند و نیاز به تعریف متغیرهای اضافی را از بین میبرد.
تاپلها و تجزیه (Tuples and Deconstruction)
تاپلها در نسخه 7.0 بسیار قویتر شدهاند و اکنون میتوانید مقادیر متعدد را به صورت مستقیم از یک متد بازگردانید. همچنین، ویژگی تجزیه (Deconstruction) به شما این امکان را میدهد تا مقادیر تاپل را به صورت جداگانه دریافت کنید.
مثال:
(string name, int age) GetPerson()
{
return ("Ali", 25);
}
var person = GetPerson();
Console.WriteLine($"Name: {person.name}, Age: {person.age}");
// تجزیه
(string name, int age) = GetPerson();
Console.WriteLine($"Name: {name}, Age: {age}");
این قابلیت به بهبود خوانایی کد کمک کرده و نیاز به استفاده از کلاسهای اضافی برای نگهداری دادهها را کاهش میدهد.
تطبیق الگو (Pattern Matching)
C# 7.0 امکان Pattern Matching را معرفی کرد که به شما اجازه میدهد نوع داده را بررسی کرده و بر اساس آن عملیات انجام دهید. این ویژگی بیشتر در ترکیب با دستور switch
یا شرطهای if
استفاده میشود.
مثال:
object obj = 42;
if (obj is int number)
{
Console.WriteLine($"The number is {number}");
}
// استفاده در switch
switch (obj)
{
case int n when n > 0:
Console.WriteLine($"Positive number: {n}");
break;
case string s:
Console.WriteLine($"It's a string: {s}");
break;
default:
Console.WriteLine("Unknown type");
break;
}
این ویژگی کدهای شما را واضحتر و انعطافپذیرتر میکند.
توابع محلی (Local Functions)
در نسخه 7.0 میتوانید توابع را درون یک متد دیگر تعریف کنید. این توابع فقط در محدوده متد اصلی قابل دسترسی هستند.
مثال:
void MainFunction()
{
Console.WriteLine("Main Function");
void LocalFunction()
{
Console.WriteLine("Local Function");
}
LocalFunction();
}
MainFunction();
این ویژگی باعث سازماندهی بهتر کد و کاهش پیچیدگی میشود.
گسترش اعضای بدندار (Expanded Expression-Bodied Members)
در C# 6.0 ویژگی Expression-Bodied Members معرفی شد، اما در C# 7.0 این ویژگی برای سازندهها (Constructors) و دستورات get
و set
نیز گسترش یافت.
مثال:
public class Person
{
private string _name;
// سازنده
public Person(string name) => _name = name;
// ویژگی
public string Name => _name;
}
این قابلیت کدنویسی را مختصرتر و زیباتر میکند.
مقادیر محلی و بازگشت به صورت ارجاعی (Ref Locals and Ref Returns)
در نسخه 7.0 میتوانید دادهها را به صورت ارجاعی بازگردانید یا درون یک متغیر محلی به صورت ارجاعی ذخیره کنید. این قابلیت برای بهینهسازی حافظه و عملکرد بسیار مفید است.
مثال:
ref int FindElement(int[] numbers, int value)
{
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] == value)
{
return ref numbers[i];
}
}
throw new Exception("Value not found");
}
int[] numbers = { 1, 2, 3, 4 };
ref int element = ref FindElement(numbers, 3);
element = 42;
Console.WriteLine(string.Join(", ", numbers)); // خروجی: 1, 2, 42, 4
دیگر ویژگیها (Other Features)
Discard (نشانگر بیاهمیت)
از کاراکتر _
برای حذف مقادیر یا متغیرهایی که نیاز ندارید، استفاده میشود.
مثال:
var (_, age) = GetPerson();
Console.WriteLine($"Age: {age}");
اعداد دودویی و جداکننده ارقام (Binary Literals and Digit Separators)
اعداد دودویی با پیشوند 0b
و جداکنندههای _
برای خوانایی بیشتر اضافه شدهاند.
مثال:
int binaryValue = 0b1010;
int largeNumber = 1_000_000;
عبارات Throw (Throw Expressions)
اکنون میتوانید از دستور throw
در عبارات و مقداردهی استفاده کنید.
مثال:
string name = null;
string displayName = name ?? throw new ArgumentNullException(nameof(name));
نتیجهگیری
نسخه 7.0 زبان C# با معرفی قابلیتهای متعددی مانند تطبیق الگو، تاپلها، متغیرهای out و توابع محلی، نوشتن کد را سادهتر و بهینهتر کرده است. این نسخه ابزارهایی قدرتمند برای توسعهدهندگان فراهم میکند.
And To Do So From Now Until The Death, Whatever the Cost
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام