Що ми чекаємо від C# 4.0?

вторник, 18 ноября 2008, Александр Краковецкий

Спробую підсумувати все, що мені вдалось знайти на тему "що ми чекаємо від C# 4.0".

Отже,

Feature 1: "??=" для лінивих програмістів (а ми ж всі такі!)

Нехай маємо код:

public ISomeService Service
{
    get { return service = service ?? LazyLoadSomeService(); }
}

який еквівалентний коду

public ISomeService Service
{
    get { return service = service == null ? LazyLoadSomeService() : service; }
}

або

public ISomeService Service
{
    get
    {
        if (service == null)
            return service = LazyLoadSomeService();
        else
            return service;
    }
}

Пропонується наступний запис:

public ISomeService Service
{
    get { return service ??= LazyLoadSomeService(); }
}

Від себе: ідея подобається.

Feature 2: "Проваливающийся switch"

Наприклад, код

const int val = 0;
switch(val)
{
case 0:
    Console.WriteLine(0);
case 1:
    Console.WriteLine(1);
case 2:
    Console.WriteLine(2);
    break;
}

повинен вивести 0, 1, 2.

Від себе: не бачу такої необхідності. Хоча в дуже обмеженому колі задач може знадобитися.

 Feature 3: Використання в switch виразів (а не лише константів)

Type IntType = typeof (Int32);

switch (IntType)
{
   case typeof(Int32):
     DoSmth();
     break;
}

Від себе: ідея дуже подобається.

Feature 4: Необов'язкові параметри (опціональні)

Основна ідея - замість перегрузки функцій помічати додаткові параметри як необов'язкові. Схожа тема - задавати значення деяких параметрыв за замовчуванням. Докладно можна почитати тут.

Від себе: важко визначитися, від цієї фічі ми довго відмовлялися, а тепер нам її знову пропонують. Швидше згоден, що потрібно поверти, чим ні.

Feature 5 (власна ідея): Enums з description

Щось схоже можна реалізувати самому, але щось таке хотілося б мати:

enum Colors : int
{
    ["Виберіть колір..."]
    None = 0,  
    ["Червоний"]
    Red = 1,
    ["Жовтий"]
    Yellow = 2
}

Ну і відповідний доступ як до значення, так і до опису.

Додаткові матеріали по ідеям:

Spec# and ideas for C# 4.0

Чего мы ждем от С# 4.0 (повна версія)

Додаткові матеріали по тому, що обіцяють:

C# 4.0: Meet the Design Team

C# 4.0 - A peek into the future - тут обіцють перш за все Concurrency Framework для паралельних обчислень і підтримка "динамічних" фіч IronPytрon і Dynamic Language Runtime.

C# 4, part 3: Ideas from Microsoft

Якщо чесно, нічого революційного я не побачив (можливо погано дивився). Проте, на мій погляд,

Func stringFunc = () => "foo";

вже занадто... Якийсь перл получається :) Так C# втратить свою простоту і читабельність (і його переіменують на UPL - Universal Programming Language :).

В коментарях хотілося б побачити ваші варіанти та бачення.

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии