Що ми чекаємо від C# 4.0?
Спробую підсумувати все, що мені вдалось знайти на тему "що ми чекаємо від 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
}
Ну і відповідний доступ як до значення, так і до опису.
Додаткові матеріали по ідеям:
Чего мы ждем от С# 4.0 (повна версія)
Додаткові матеріали по тому, що обіцяють:
C# 4.0 - A peek into the future - тут обіцють перш за все Concurrency Framework для паралельних обчислень і підтримка "динамічних" фіч IronPytрon і Dynamic Language Runtime.
C# 4, part 3: Ideas from Microsoft
Якщо чесно, нічого революційного я не побачив (можливо погано дивився). Проте, на мій погляд,
Func
вже занадто... Якийсь перл получається :) Так C# втратить свою простоту і читабельність (і його переіменують на UPL - Universal Programming Language :).
В коментарях хотілося б побачити ваші варіанти та бачення.
Компании из статьи
Microsoft Украина | Украинское подразделение компании Microsoft. |