Я видел много изменений 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, это является более старым"
Компилятор 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
Краткий список (из сообщения Эда ) это:
Вещи, которые не будут работать, включают динамические и no-pia (два наших самых больших затраты времени на их реализацию). Первый требует поддержки фреймворка, а второй требует поддержки во время выполнения.
Это не список и не окончательный вариант, но в качестве примера я только что установил новый проект VS2010, нацеленный на .NET 3.5, и успешно создал метод с параметрами по умолчанию и вызвал его с именованными аргументами, оба из которых являются функциями C# 4.0.
Я знаю, что ковариация и контравариантность получили некоторую поддержку благодаря Аннотации IL + и - в параметрах типа в CLR 2.0. Не уверен насчет других функций.
Учитывая, что параметры по умолчанию уже были функцией VB.NET, возможно, что C # просто реализовал их на уровне компилятора. Однако команда CLR могла бы реализовать совершенно новый способ сделать это.
Вы должны изменить свой вопрос, указав «какие функции C # 4.0 являются изменениями компилятора, которые будут применяться к платформе .NET 3.5»
Я думаю об изменениях в "старой" спецификации ... изменение блокировки
не будет доступно, так как для этого потребуется новая перегрузка - но "подобный полю" events "change должен работать. Мне нужно будет проверить, что излучает компилятор ;-p
И, конечно же:
using System;
class Program
{
public event EventHandler SomeHandler;
static void Main() { }
}
получает аксессоры нового стиля ;-p