Каковы другие новые возможности C # 4.0 после динамических и дополнительных параметров? - PullRequest
2 голосов
/ 13 апреля 2010

Итак, C # 4.0 вышел вчера. Он ввел широко обсуждаемое ключевое слово dynamic, именованные и необязательные параметры. Небольшие улучшения заключались в неявном ref и распознавании индексированных свойств и свойств по умолчанию для методов COM, различий и несовпадений (действительно .NET CLR, а не только C #) и ...

Это правда? Являются ли dynamic и необязательные / именованные параметры единственными реальными улучшениями в C #? Или я что-то пропустил? Не то, чтобы я жаловался, но это кажется немного скудным после C # 2.0 (generics) и C # 3.0 (lambda, LINQ). Может быть, язык только что достиг реальной зрелости?

Ответы [ 3 ]

2 голосов
/ 13 апреля 2010

Это почти все, да. Есть некоторые очень незначительные изменения в блокировке и событиях, но обычно они не будут заметны. Информацию об изменениях событий см. В серии блогов Криса Берроуза ; о блокировке см. блог Эрика Липперта . Короче говоря, блокировка теперь более надежна - она ​​использует новую перегрузку Monitor.Enter, чтобы она могла определить, была ли блокировка получена даже перед лицом асинхронных исключений. Подобные полям события теперь свободны от блокировки, и ссылка на метод доступа к полевым событиям (добавить / удалить) в объявленном классе будет ссылаться на событие, а не на поле.

Это определенно меньший набор изменений, чем 2 и 3, но я думаю, что это хорошо во многих отношениях - я думаю, что разработчикам нужно определенное количество времени для того, чтобы текущие функции "застряли". И 2, и 3 были действительно большими выпусками функций ... и некоторые из этих функций до сих пор не совсем понятны, IMO.

Я уверен, что это не будет концом эволюции C # - у меня есть некоторые идеи, поэтому я уверен, что команда C # имеет гораздо больше - но в одном выпуске может быть упаковано только так много. Хотя я подозреваю, что большинство разработчиков на самом деле не будут использовать динамическую типизацию очень часто, это огромное изменение с точки зрения самого языка, IMO - очень сложная вещь, чтобы понять правильно. Я не удивлен, что у команды не было много времени, чтобы создать гораздо больше функций в том же цикле выпуска.

Не забывайте, что VS2010 тоже работал над ним, интегрируя в него все новые функции и работая над довольно значительными изменениями в самой Visual Studio.

Стоит отметить, что хотя ковариация и контравариантность являются определенно функциями CLR - и действительно были с CLR v2.0 - они по-прежнему являются языковыми и библиотечными функциями, так же как дженерики и обнуляемое значение типы охватывают CLR, рамки и язык.

1 голос
/ 13 апреля 2010

Здесь есть список изменений здесь .

0 голосов
/ 13 апреля 2010

Я бы предложил купить учебник. Я работаю над Visual Studio 2010 Step by Step Джона Шарпа, ища новые функции и вещи, которых я не знал. Это отличная серия книг, я бы порекомендовал взять ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...