Существует ли список изменений для C#4.0 та работа в.Net 3.5?

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

Так, есть ли всесторонний список новых функций C# 4.0 языка, которые будут работать над.Net 3.5 или ниже?

Как пример, параметры по умолчанию требуют.NET 4,0 CLR, или действительно ли они - функция компилятора? Возможно использовать автоматические свойства (функция C# 3.0) и все еще целевая.NET 2.0, так как это не требует Поддержки платформы, но не использовать выражения LINQ, так как это действительно требует Платформы 3.5.

Не говорите, "что, конечно, C#4.0 не будет работать в причине.Net 3.5, это является более старым"

23
задан Anish Gupta 17 July 2012 в 10:20
поделиться

5 ответов

Компилятор C # в 4.0 поставляется с новой функцией многоцелевого назначения. Краткая версия заключается в том, что он создаст сборку с любой версией метаданных, присутствующей в ссылке, которая определяет System.Object (обычно mscorlib.dll). Это позволяет использовать его для компиляции сборок для 2.0 и 3.5, а также для различных версий Silverlight. Эта функция была введена для поддержки мультитаргетинга в Visual Studio 2010.

Таким образом, вы можете использовать компилятор C # 4.0 для компиляции сборок 3.5 и использовать любые функции C # 4, которые вам нужны, при условии, что нет конкретной зависимости по 4.0 библиотекам. Например, именованные аргументы и необязательные параметры будут работать нормально, потому что они не используют никаких функций платформы 4.0. А вот Dynamic работает, и поэтому сразу на 3.5 он работать не будет.

Здесь есть статья, посвященная основам.

http://blogs.msdn.com/ed_maurer/archive/2010/03/31/multi-targeting-and-the-c-and-vb-compilers.aspx

Краткий список (из сообщения Эда ) это:

  • именованные аргументы и необязательные параметры
  • определенные улучшения синтаксиса COM (например, «опустить ссылку»)
  • общая дисперсия

Вещи, которые не будут работать, включают динамические и no-pia (два наших самых больших затраты времени на их реализацию). Первый требует поддержки фреймворка, а второй требует поддержки во время выполнения.

31
ответ дан 29 November 2019 в 02:22
поделиться

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

2
ответ дан 29 November 2019 в 02:22
поделиться

Я знаю, что ковариация и контравариантность получили некоторую поддержку благодаря Аннотации IL + и - в параметрах типа в CLR 2.0. Не уверен насчет других функций.

2
ответ дан 29 November 2019 в 02:22
поделиться

Учитывая, что параметры по умолчанию уже были функцией VB.NET, возможно, что C # просто реализовал их на уровне компилятора. Однако команда CLR могла бы реализовать совершенно новый способ сделать это.

Вы должны изменить свой вопрос, указав «какие функции C # 4.0 являются изменениями компилятора, которые будут применяться к платформе .NET 3.5»

0
ответ дан 29 November 2019 в 02:22
поделиться

Я думаю об изменениях в "старой" спецификации ... изменение блокировки не будет доступно, так как для этого потребуется новая перегрузка - но "подобный полю" events "change должен работать. Мне нужно будет проверить, что излучает компилятор ;-p

И, конечно же:

using System;
class Program
{
    public event EventHandler SomeHandler;
    static void Main() { }
}

получает аксессоры нового стиля ;-p

0
ответ дан 29 November 2019 в 02:22
поделиться
Другие вопросы по тегам:

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