ویژگی‌های جدید C# 6.0

ویژگی‌های جدید C# 6.0

نسخه C# 6.0 که در جولای 2015 همراه با Visual Studio 2015 منتشر شد، مجموعه‌ای از قابلیت‌های کوچک اما مؤثر را به زبان اضافه کرد که برنامه‌نویسی را ساده‌تر و تولید کد را سریع‌تر کرد. تمرکز اصلی این نسخه بر کاهش کدهای اضافی (Boilerplate Code) و بهبود خوانایی کد بود. این ویژگی‌ها طرفداران کدهای ساده و تمیز را بسیار خوشحال کرد.

ویژگی‌های جدید در یک نگاه:

  • Static Imports (وارد کردن استاتیک)
  • Exception Filters (فیلترهای استثنا)
  • Auto-Property Initializers (مقداردهی اولیه برای Auto-Properties)
  • Expression-Bodied Members (اعضای مبتنی بر عبارت)
  • Null Propagation (انتشار null)
  • String Interpolation (تزریق مقادیر در رشته‌ها)
  • nameof Operator (عملگر nameof)
  • Index Initializers (مقداردهی مقادیر شاخص)
  • Await in catch/finally (await در بلوک‌های catch/finally)
  • Default Values for Getter-Only Properties (مقادیر پیش‌فرض برای ویژگی‌های فقط خواندنی)

Static Imports (وارد کردن استاتیک)

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

مثال:

using static System.Console;

class Program
{
    static void Main()
    {
        WriteLine("Hello, World!"); // بدون نیاز به System.Console
    }
}

Exception Filters (فیلترهای استثنا)

این قابلیت به شما امکان می‌دهد تا شرط‌هایی را برای catch بنویسید که تنها زمانی اجرا شوند که شرط برقرار باشد.

مثال:

try
{
    throw new Exception("Test exception");
}
catch (Exception ex) when (ex.Message == "Test exception")
{
    Console.WriteLine("Filtered exception caught!");
}

Auto-Property Initializers (مقداردهی اولیه برای Auto-Properties)

دیگر نیازی به مقداردهی اولیه در سازنده‌ها ندارید. اکنون می‌توانید مقادیر پیش‌فرض را مستقیماً در تعریف Property مقداردهی کنید.

مثال:

class Person
{
    public string Name { get; set; } = "John Doe";
    public int Age { get; set; } = 30;
}

Expression-Bodied Members (اعضای مبتنی بر عبارت)

با این ویژگی می‌توانید متدها یا Propertyهایی که تنها یک خط کد دارند را به شکلی مختصرتر بنویسید.

مثال:

class Person
{
    public string Name { get; set; }

    public string GetGreeting() => $"Hello, {Name}!";
}

Null Propagation (انتشار null)

این ویژگی، کدهای شرطی مرتبط با بررسی null را ساده‌تر می‌کند.

مثال:

string name = null;
int? length = name?.Length; // اگر name برابر null باشد، مقدار length نیز null خواهد شد.

String Interpolation (تزریق مقادیر در رشته‌ها)

به جای استفاده از String.Format، می‌توانید مقادیر را مستقیماً در داخل یک رشته وارد کنید.

مثال:

string name = "John";
int age = 30;
Console.WriteLine($"My name is {name} and I am {age} years old.");

nameof Operator (عملگر nameof)

این عملگر نام متغیر، ویژگی، یا متد را به عنوان یک رشته برمی‌گرداند. این ویژگی برای کدهای وابسته به نام، مانند Validation و Logging، بسیار مفید است.

مثال:

void Log(string parameterName)
{
    Console.WriteLine($"Parameter: {parameterName}");
}

string name = "John";
Log(nameof(name)); // خروجی: "Parameter: name"

Index Initializers (مقداردهی مقادیر شاخص)

اکنون می‌توانید به صورت مستقیم، مقادیر را برای اندیس‌های خاص تنظیم کنید.

مثال:

var dictionary = new Dictionary
{
    [1] = "One",
    [2] = "Two"
};

Await in catch/finally (await در بلوک‌های catch/finally)

این نسخه به شما اجازه می‌دهد از await در بلوک‌های catch و finally استفاده کنید.

مثال:

try
{
    throw new Exception("Test exception");
}
catch (Exception ex)
{
    await LogAsync(ex);
}
finally
{
    await CleanupAsync();
}

Default Values for Getter-Only Properties (مقادیر پیش‌فرض برای ویژگی‌های فقط خواندنی)

ویژگی‌های فقط خواندنی اکنون می‌توانند مقادیر پیش‌فرض داشته باشند.

مثال:

class Person
{
    public string Name { get; } = "John Doe";
}

Roslyn: کامپایلر به عنوان سرویس

همزمان با C# 6.0، مایکروسافت Roslyn را معرفی کرد که کامپایلر سی‌شارپ است و خود در زبان C# نوشته شده است. این کامپایلر به توسعه‌دهندگان اجازه می‌دهد از آن به عنوان یک سرویس برای تجزیه و تحلیل و تولید کد استفاده کنند.

مثال: استفاده از Roslyn

using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;

class Program
{
    static void Main()
    {
        string code = "class Test { static void Main() { System.Console.WriteLine("Hello, Roslyn!"); } }";
        SyntaxTree tree = CSharpSyntaxTree.ParseText(code);
        Console.WriteLine(tree);
    }
}

نتیجه‌گیری

نسخه C# 6.0 یک گام بزرگ در جهت کاهش کدهای اضافی و افزایش خوانایی بود. قابلیت‌هایی مانند String Interpolation و Null Propagation توسعه‌دهندگان را قادر ساختند تا کدی تمیزتر و مختصرتر بنویسند. همچنین، معرفی Roslyn زمینه‌ساز نسل جدید ابزارهای تحلیلی و خودکارسازی شد.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
ویژگی‌های جدید C# 5.0

ویژگی‌های جدید C# 5.0

آنچه در این پست میخوانید Asynchronous Members (اعضای غیرهمزمان) Caller Info Attributes (ویژگی‌های اطلاعات فراخوان) تأثیر نسخه C# 5.0 نسخه…

بیشتر بخوانید
ویژگی‌های جدید C# 4.0

ویژگی‌های جدید C# 4.0

آنچه در این پست میخوانید Dynamic Binding (اتصال دینامیک) Named and Optional Parameters (پارامترهای نام‌گذاری‌شده و اختیاری) Generic Covariance and…

بیشتر بخوانید
ویژگی‌های جدید C# 3.0

ویژگی‌های جدید C# 3.0

آنچه در این پست میخوانید Language-Integrated Query (LINQ) (پرس‌وجوی یکپارچه با زبان) Lambda Expressions (عبارات لامبدا) Auto-Implemented Properties (خصوصیات خودکار…

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.