Новые интересные функции C # 4.0

Каковы самые крутые новые функции, которые вы, ребята, ищете или которые вы слышали, выпускаются в c # 4.0.

Динамический материал звучит круто, если вам это нужно, но я не ожидаю, что использую его очень часто.

Общая дисперсия для делегатов и интерфейсов аналогична: отсутствие дисперсии является головной болью на данный момент, но многие из мест, где это боль, не будут покрываться ограниченной дисперсией, доступной на C # 4.

Функции COM меня не особенно интересуют – я действительно должен больше разбираться в том, что они есть.

Необязательные и именованные параметры могут иметь большое значение при создании неизменяемых типов: он позволяет использовать синтаксис:

Person p = new Person (name: "Jon", age: 32); 

без наличия гигантских комбинаций перегрузок конструктора. Я бы предпочел немного больше поддержки для написания неизменяемых типов в виде автоматически загружаемых свойств, но я не ожидаю, что мы их получим. (На данный момент они, конечно, не представлены в предлагаемом списке функций.)

Меня лично больше интересует пара функциональных возможностей .NET 4.0 – в частности, кодовые контракты и параллельные расширения .

Значения по умолчанию параметра метода:

 public void MyMethod1(string value1 = "test", int num1 = 10, double num2 = 12.2) { //... } 

Также возможно анонимные типы возврата:

 public var MyMethod2() { // .. } 

Кортеж

IDynamicObject , клей dynamic , позволяет интерпретировать вызов во время выполнения.

Это интересно для нестандартных сценариев, таких как REST, XML, COM, DataSet , динамические языки и многие другие. Это реализация динамической диспетчеризации, построенной на основе динамического языка Runtime (DLR) .

Вместо громоздкой семантики отражения вы указываете на переменные, объявленные как dynamic . Представьте, что вы работаете с объектами Javascript из Silverlight:

 dynamic obj = GetScriptObject(); HtmlPage.Window.Alert(obj.someProperty); 

Все синтаксисы C # поддерживаются (я считаю):

 HtmlPage.Window.Alert(obj.someMethod() + obj.items[0]); 

Отражение само выглядит намного чище:

 public void WriteSomePropertyValue(object target) { Console.WriteLine((target as dynamic).SomeProperty); } public void WriteSomeMethodValue(object target, int arg1, string arg2) { Console.WriteLine((target as dynamic).SomeMethod(arg1, arg2)); } 

dynamic – еще один инструмент в наборе инструментов. Он не меняет статические и динамические дебаты, он просто ослабляет трение.

Расширенная поддержка деревьев выражений !

Не строго C #, но поскольку .NET помечен здесь, это хорошая ссылка на изменения BCL .

Примечание к себе: необходимо переименовать мой метод продолжения Stopwatch.Restart() до выпуска 4.0. 🙂

  • C # 2.0 -Generics (поддержка .NET Framework была добавлена, и C # выиграл от этого); шаблон iteratorа (ключевое слово yield); анонимные методы (ключевое слово делегата), типы с нулевым значением и оператор нулевой коалесценции (??).
  • C # 3.0 – Анонимные типы, методы расширения, инициализаторы объектов, инициализаторы коллекции, неявно типизированные локальные переменные (ключевое слово var), lambda-выражения (=>) и шаблон выражения запроса LINQ.
  • C # 4.0 -Опциональные параметры и именованные аргументы, Динамическая типизация (динамический тип), улучшенный COM-Interop, Contra и Co-Variance.

динамическое ключевое слово похоже на то, что он может легко преодолеть разрыв между динамическими языками, такими как IronRuby или IronPython, что, вероятно, поможет принять его в monoкультуре Microsoft …, что меня волнует.

Хотя я заинтригован этим, меня также беспокоит, что это будет чрезмерно использовано, как Generics и LINQ, SQLCLR и т. Д. 🙂

C # 4.0

1) PLinq

2) Именованные и необязательные параметры

3) Ленивый

4) Отклонение Co & Contra

5) Параллельная задача

6) Динамический объект

7) Объект Expando

8) Улучшенный COM-Interop

9) Кортеж

только чтобы назвать несколько

Возможность писать asynchronous код синхронно с асинхронным и ждущим – это classно.

  • Перенаправление из asp.net web api post action
  • перегрузка метода vs необязательный параметр в C # 4.0
  • Когда следует использовать динамическое ключевое слово в c # 4.0?
  • C # 4.0, необязательные параметры и параметры не работают вместе
  • Как получить DateTime из Интернета?
  • Непосредственная отправка нажатий клавиш в другой процесс путем подключения
  • Как создать элемент управления ActiveX (COM) на C #?
  • Как генерируется общая ковариация и контра-дисперсия в C # 4.0?
  • Контравариантность объяснялась
  • Получить название браузера Chrome с помощью c #
  • Список безопасность streamов
  • Давайте будем гением компьютера.