Я знаю, что существуют некоторые хорошие новые возможности в C# 4.0, но я не могу, ни за что в жизни, думать о неопровержимом доводе или обновления существующих проектов или переключения на новые проекты.
Я видел некоторые сообщения, где люди сказали, что, если бы их услуга хостинга не обеспечила.Net 4, что они нашли бы другого поставщика, поскольку.Net 4 был pinicle к их направлению <?>
.
Теперь мой босс пытается заставить меня соглашаться переключить все наши продуктивные среды на C# 4 и сделать это теперь.
Таким образом, вопрос, имеет кого-либо или начал использовать или преобразовал проект в, C# 4 для неопровержимого довода? Была ли функция, которую Вы просто должны были иметь, который сделает Вашу жизнь настолько легче?
В C # 4.0 есть несколько интересных новых функций:
В своей публикации в блоге Скотт Гатри подробно описывает особенности .NET 4 в целом . Еще один отличный ресурс - это технический документ по адресу http://www.asp.net/learn/whitepapers/aspnet4 . Однако я сомневаюсь, что вам понадобится одна / любая из этих новых функций сразу. Как Скотт Хансельман написал в блоге :
есть много нового и добавлен в .NET 4, но не в этом "подавляющее-мне-нужно-переучивать-все" способ.
Поэтому необходимость обновления зависит от множества других факторов. Некоторые причины, которые приходят на ум:
Открытый диалог с вашим менеджером кажется уместным, чтобы понять его доводы в пользу обновления. Я бы сказал, что то, что он блестящий, не является веской причиной.
В качестве ссылки в этом датированном вопросе о переполнении стека « Почему бы не перейти на последнюю версию .NET Framework » содержится обратное к вашему вопросу.
Откровенно говоря, System.Collections.Concurrent упростил разработку многопоточных приложений.
Новый и улучшенный System.Linq.Expressions делает написание динамически скомпилированного кода детской забавой.
Новая функция именованных параметров означает, что у меня могут быть большие конструкторы, и я не могу запутаться в отношении каждого параметра. Неизменяемые объекты намного проще.
Во-первых, то, что является убедительным для меня, может ничего не значить для вас. Сказав это, я бы обновил Visual Studio, если позволяет бюджет. На самом деле, лично я считаю, что есть огромный риск для карьеры, если вы останетесь в компании, которая не поддерживает ваши инструменты в актуальном состоянии. Вы будете отставать в своих знаниях в этой области без доступа к новейшим инструментам".
Что касается преобразования всех ваших проектов только для того, чтобы преобразовать их, то мне это кажется глупостью. Если отбросить всю дополнительную работу по распространению (и обновление машин до .NET 4), нужно учитывать вероятность того, что что-то пойдет не так. (И если вы похожи на меня, некоторые вещи должны вызываться из сторонних программ, использующих .NET 3.5, что делает их невозможными для преобразования).
Моим первым правилом будет то, что ничего не нужно преобразовывать, если вы все равно над этим не работаете. Но я бы серьезно рассмотрел возможность преобразования всего, что может быть улучшено либо за счет параллельного кода, либо за счет COM-взаимодействия.
У меня есть интересный проект, который был преобразован. У меня был долго работающий веб-метод, который вызывался. В версии, которая существует сейчас, я возвращаюсь из метода, не зная результатов. Вместо этого я дал пользователю возможность проверить результат позже. Переход к параллельному циклу foreach работает гораздо лучше, и я могу сообщить пользователю о возникновении ошибок.
Этот же проект переводится на использование RIA-сервисов, что значительно улучшило и сократило объем моего собственного кода.
Если вы занимаетесь WPF / Silverlight, я бы определенно рекомендовал перейти на Visual Studio 2010 (я знаю, вы можете писать код .NET 4.0 без IDE, но это крайний случай, если он вообще был).
Поддержка нескольких мониторов - это здорово, но с ошибками. Я трачу много времени, пытаясь заставить окна обновиться.
С точки зрения языка, взаимодействие с COM (как упомянул @Gvs) также значительно улучшено благодаря динамическому типу данных и необязательным параметрам.
UPDATE: Поддержка нескольких мониторов довольно надежна в VS 2010 SP1.
Я обновился по той же причине, что и все остальные.
... так что я могу поместить это в свое резюме :)
Если вам удастся уговорить начальника приобрести Visual Studio Ultimate Edition стоимостью более 10 000 долларов, IntelliTrace станет веской причиной для обновления вашей среды и достаточным оправданием для инвестиций.
Если вы начинаете новый проект сегодня, вероятно, лучше всего начать его с 4.0, так как в будущем вам все равно придется перенести его в какой-то момент (при условии, что он будет работать достаточно долго, старые версии .net будут просто перестаньте получать поддержку).
C # 4 подразумевает другие вещи ... в зависимости от вашего проекта ... WCF 4, WPF 4, ASP.NET 4, MVC 2, Entity Framework 2 и т. Д. Так что не просто смотрите на C # как на причину для изменения, вы также должны смотреть на весь стек. Если по-прежнему нет ничего убедительного, то оставаться на месте - вероятно, разумный выбор.
Интеграция COM намного проще с динамическим
типом данных и необязательными
параметрами.
Нет никаких веских причин для перехода на новую версию, связанных со стабильностью или безопасностью. Разве это не должно волновать вашего босса?
Для меня есть две вещи:
Чем компактнее код (т.е. если вы выражаете идею, не прибегая к помощи дженериков), тем лучше. т.е. если вы выражаете идею без дополнений "о, как обойти ограничение Y языка"), тем лучше, потому что код гораздо легче поддерживать и сложнее сделать глупую (или хуже) ошибку.
Ваш вопрос относится к C# 4.0 или .NET 4.0?
В C# 4.0 есть только пара действительно хороших новых возможностей. Ковариация/контравариация не всегда полезна, но когда вы столкнетесь с необходимостью в ней, она может действительно избавить от многих проблем. Необязательные параметры метода могут уменьшить количество некрасивых переопределений метода и сделать определенные вызовы метода намного чище. Если вы используете COM или IronPython, или любой из нескольких подобных фреймворков, ключевое слово dynamic
также может стать настоящим спасением.
.NET 4.0 в целом имеет тонну действительно интересных возможностей в различных фреймворках. Поддержка внешних ключей в Linq to Entities, например, значительно облегчает нам жизнь. Многие люди в восторге от поддержки POCO. Они также добавили поддержку некоторых методов LINQ (например, Distinct
), которые ранее отсутствовали в Entity Framework.
Так что все будет сводиться к тому, какие фреймворки вы используете и как вы их используете, и насколько дорого вам обойдется переход.