Зачем мне обновляться до c # 4.0? - PullRequest
7 голосов
/ 16 июля 2010

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

Я видел несколько постов, в которых люди говорили, что если бы их хостинг не предоставлял .Net 4, то они бы нашли другого провайдера, поскольку .Net 4 был бы точным в их направлении <?>.

Теперь мой начальник пытается заставить меня согласиться переключить все наши производственные среды на C # 4 и сделать это сейчас.

Таким образом, вопрос в том, кто-либо начал использовать или преобразовал проект в C # 4 по веской причине? Была ли какая-то особенность, которая была вам нужна, чтобы сделать вашу жизнь намного проще?

Ответы [ 12 ]

12 голосов
/ 16 июля 2010

В C # 4.0 есть несколько интересных новых функций:

  • Динамический поиск членов
  • Ковариантный и контравариантный параметры универсального типа
  • Необязательноref Ключевое слово при использовании COM
  • Необязательные параметры и именованные аргументы
  • Индексированные свойства

В своем посте-релизе Скотт Гатри подробно описывает особенности .NET 4 в целом .Еще один замечательный ресурс - это белая книга на http://www.asp.net/learn/whitepapers/aspnet4. Однако, я бы сомневался, что вам понадобится нужна одна / любая из этих новых функций сразу.Как Скотт Хансельман написал в блоге :

, есть много нового, добавленного и добавленного в .NET 4, но не в том, что "все, что мне нужно, чтобы переучиваться""way.

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

  • Стандартизация среды разработки на одной платформе VS2010 по сравнению с VS2008.
  • Размер .NET Framework существенно уменьшен
  • Скоростьулучшения, если вы являетесь разработчиком Visual Studio Tools for Office

Открытый диалог с вашим менеджером, по-видимому, уместен, чтобы понять его причины для обновления.Я бы сказал, что потому, что он блестящий, это не является веской причиной.

В качестве ссылки на этот устаревший вопрос переполнения стека " Почему бы не перейти на последнюю версию .net framework " предоставляется обратноеваш вопрос.

5 голосов
/ 16 июля 2010

Удивительно, но не упоминается:

5 голосов
/ 16 июля 2010
  • Откровенно говоря System.Collections.Concurrent сделал разработку многопоточных приложений на одном дыхании.

  • Новый улучшенный System.Linq.Expressions делает написание динамически скомпилированного кода похоже на детскую игру.

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

3 голосов
/ 16 июля 2010

Ваш вопрос относится к C # 4.0 или .NET 4.0?

В C # 4.0 есть только пара действительно хороших новых функций. Ковариантность / контравариантность не всегда полезна, но когда вы сталкиваетесь с необходимостью, это действительно может спасти много боли. Необязательные параметры метода могут уменьшить множество уродливых переопределений методов и сделать некоторые вызовы методов намного чище. Если вы используете COM или IronPython или любую из нескольких подобных платформ, ключевое слово dynamic также может стать настоящим спасением.

.NET 4.0 в целом имеет тонну действительно интересных функций в различных средах. Например, поддержка внешнего ключа в Linq to Entities значительно облегчает нам жизнь. Многие люди действительно взволнованы поддержкой POCO. Они также добавили поддержку некоторых методов LINQ (например, Distinct), которые ранее отсутствовали в Entity Framework.

Таким образом, все будет сводиться к тому, какие фреймворки вы используете и как вы их используете, и как дорого вам будет сделать переход.

2 голосов
/ 16 июля 2010

Я обновился по той же причине, что и все остальные.

... чтобы я мог добавить это в свое резюме:)

2 голосов
/ 16 июля 2010

Во-первых, то, что убедительно для меня, может ничего не значить для вас.Сказав это, я бы обновил Visual Studio, если бюджет позволяет.На самом деле, лично я думаю, что остаться в компании, которая не поддерживает ваши инструменты в актуальном состоянии, - огромный риск для карьеры.Вы отстанете в своих знаниях в этой области, не имея доступа к новейшим инструментам.

Что касается преобразования всех ваших проектов просто для их преобразования, мне это кажется глупостью.Откладывая все дополнительное распределение работы (и модернизируя машины до версии .NET 4), вы должны учитывать вероятность того, что у вас что-то пойдет не так.(И если вы похожи на меня, некоторые вещи должны вызываться из сторонних программ, использующих .NET 3.5, что делает их невозможными для преобразования.)

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

У меня есть убедительный проект, который был преобразован.У меня был давно запущенный веб-метод.В существующей версии я возвращаюсь из метода, не зная результатов.Вместо этого я дал пользователю способ проверить позже.Переходя к параллельному циклу foreach, это работает намного лучше, и я могу сообщить пользователю, если были какие-либо ошибки.

Этот же проект также преобразуется для использования служб RIA, которые значительно улучшились и сократили объеммой собственный код

1 голос
/ 16 июля 2010

Если вы работаете с WPF / Silverlight, я бы определенно рекомендовал перейти на Visual Studio 2010 (я знаю, вы можете писать код .NET 4.0 без IDE, но это крайний случай, если он вообще был).

Поддержка нескольких мониторов отличная, но глючная. Я провожу много времени, пытаясь обновить окна.

С точки зрения языка, COM-взаимодействие (как упоминалось в @Gvs) также значительно улучшено благодаря динамическому типу данных и необязательным параметрам.

ОБНОВЛЕНИЕ: Поддержка нескольких мониторов довольно прочна, с VS 2010 SP1 .

1 голос
/ 16 июля 2010

Если вы начинаете новый проект сегодня, вероятно, лучше всего запустить его на 4.0, так как в будущем вам все равно придется перенести его в какой-то момент (при условии, что он останется достаточно долгим, более старые версии .net будут просто перестань поддерживаться).

C # 4 подразумевает другие вещи ... в зависимости от вашего проекта ... WCF 4, WPF 4, ASP.NET 4, MVC 2, Entity Framework 2 и т. Д. Так что не просто смотрите на C # как на причину изменить, вы также должны посмотреть на весь стек. Если по-прежнему нет ничего привлекательного, то, возможно, мудрое решение - оставаться там, где вы находитесь.

0 голосов
/ 16 июля 2010

Для меня есть две вещи:

  1. необязательные аргументы - потому что мне надоело загрязнять классы X-версиями одного и того же метода (перегрузка)
  2. динамическое ключевое слово - потому что выразительность обобщений в C # - шутка, таким образом я могу по крайней мере «написать то, что я имею в виду» без обручей, конечно, с потерей скорости выполнения

Чем более компактен код (т. Е. Если вы выражаете идею без добавления «о, как избежать ограничения Y языка»), тем лучше, потому что код гораздо проще поддерживать и труднее сделать глупость (или хуже) ошибка.

0 голосов
/ 16 июля 2010

Нет убедительных стабильности или безопасности причин для переключения. Разве это не должно беспокоить вашего босса?

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