Почему я должен обновить до c# 4.0?

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

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

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

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

7
задан Sripathi Krishnan 5 May 2012 в 17:07
поделиться

12 ответов

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

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

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

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

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

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

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

В качестве ссылки в этом датированном вопросе о переполнении стека « Почему бы не перейти на последнюю версию .NET Framework » содержится обратное к вашему вопросу.

12
ответ дан 6 December 2019 в 06:02
поделиться
  • Откровенно говоря, System.Collections.Concurrent упростил разработку многопоточных приложений.

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

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

5
ответ дан 6 December 2019 в 06:02
поделиться

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

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

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

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

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

2
ответ дан 6 December 2019 в 06:02
поделиться

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

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

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

UPDATE: Поддержка нескольких мониторов довольно надежна в VS 2010 SP1.

1
ответ дан 6 December 2019 в 06:02
поделиться

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

... так что я могу поместить это в свое резюме :)

2
ответ дан 6 December 2019 в 06:02
поделиться

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

5
ответ дан 6 December 2019 в 06:02
поделиться

Если вам удастся уговорить начальника приобрести Visual Studio Ultimate Edition стоимостью более 10 000 долларов, IntelliTrace станет веской причиной для обновления вашей среды и достаточным оправданием для инвестиций.

0
ответ дан 6 December 2019 в 06:02
поделиться

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

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

1
ответ дан 6 December 2019 в 06:02
поделиться

Интеграция COM намного проще с динамическим типом данных и необязательными параметрами.

0
ответ дан 6 December 2019 в 06:02
поделиться

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

-1
ответ дан 6 December 2019 в 06:02
поделиться

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

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

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

0
ответ дан 6 December 2019 в 06:02
поделиться

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

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

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

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

3
ответ дан 6 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: