Почему я должен перейти на С# 4.0?

119
13

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


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


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


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

спросил(а) 2021-01-13T23:52:17+03:00 2 недели назад
1
Решение
152

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


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

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


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


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


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

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


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

ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
103

    Совершенно откровенно System.Collections.Concurrent заставляло разрабатывать многопоточные приложения.


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


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


ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
103

Неожиданно не упоминается:


ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
84

Является ли ваш вопрос конкретным для С# 4.0 или .NET 4.0?


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


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


Итак, все будет в порядке, в каких рамках вы используете и как вы их используете, и как дорого вам будет сделать этот переключатель.

ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
74

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


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

ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
73

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


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


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


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


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

ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
60

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


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

ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
60

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


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


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


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

ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
43

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

ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
43

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


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

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

ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
43

Интеграция COM намного проще с параметрами типа dynamic и optional.

ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
-4

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

ответил(а) 2021-01-13T23:52:17+03:00 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема