بعضی از امکانات جدید IDE ویژوال استودیو ۲۰۱۹ و همچنین C# 8 را در این مطلب کوتاه خواهید دید.

امکانات جدید IDE ویژوال استودیو ۲۰۱۹

  • بهبود Start Page
  • بهبود پنجره Create a new project
  • Live Share
    • که ویژگی خیلی جالبی است و در موردش می‌توایند اینجا را ببینید.
  • سرچ بهتر در IDE (با کلید Ctrl+Q می‌توانید به کادر جستجو رفته و تقریبا هر چیزی را جستجو کنید.)
  • نمایش وضعیت فایل (از لحاظ خطا و وارنینگ و …) و اصلاح با یک کلیک!
  • امکان سرچ در پنل‌های مربوط به دیباگ (Watch و locals و …)
  • مدیریت Pull request

برخی از امکانات جدید C# 8

امکانات مختلفی به C# 8 که همراه با ویژوال استودیو ۲۰۱۹ ارائه شده، اضافه شده است. من فقط چند مورد را که به نظرم جالب بود آورده‌ام.

قابلیت مقایسه Tupleها (در سوییچ)

فکر می‌کنم مثال نیاز به توضیح نداشته باشد:

switch (state, transition)
{
    case (State.Running, Transition.Suspend):
        state = State.Suspended;
        break;
    case (State.Suspended, Transition.Resume):
        state = State.Running;
        break;
    case (State.Suspended, Transition.Terminate):
        state = State.NotRunning;
        break;
    case (State.NotRunning, Transition.Activate):
        state = State.Running;
        break;
    default:
        throw new InvalidOperationException();
}

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

state = (state, transition) switch
{
    (State.Running, Transition.Suspend)     => State.Suspended,
    (State.Suspended, Transition.Resume)    => State.Running,
    (State.Suspended, Transition.Terminate) => State.NotRunning,
    (State.NotRunning, Transition.Activate) => State.Running,
    _ => throw new InvalidOperationException()
};

تعریف بازه (range) و استفاده از آن:

Range range = 1..5;

var array = new[] { 0, 1, 2, 3, 4, 5 };
var subArray = array[range]; // {1, 2, 3, 4}

و استفاده از using بدون نیاز به تعریف بلاک کد:

استفاده از using تا به حال این شکلی بوده:

using {var r = new StreamReader(f)) 
{
    //....
}

به جای کد بالا می‌توان نوشت:

using var r = new StreamReader(f);
//....

به محض این که بلاک کدی که این using در آن قرار دارد به آخر برسد، متد Dispose برای r فراخوانی خواهد شد.

همچنین امکانات دیگری هم اضافه شده که بعضی از آنها را به صورت خلاصه می‌بینید:

  • تعریف تابع local به صورت static (داخل یک تابع دیگر)
    • البته قبلا امکان تعریف local وجود داشت اما چون static نبود، نحوه دسترسی تابع به متغیرها ایجاد مشکل می‌کرد.
  • استریم غیرهمزمان که از ترکیب iteratorها و متدهای asynchronous ایجاد شده‌اند.
  • و….

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *