Это, наверное, очень простой ответ для кого-то. У меня есть метод с необязательным параметром
, например, так:
public static Email From(string emailAddress, string name = "")
{
var email = new Email();
email.Message.From = new MailAddress(emailAddress, name);
return email;
}
Теперь я должен нацелиться на .Net 3. 5, и я понял, что Необязательные параметры
являются частью .Net 4. Однако мой проект компилируется, и я дважды проверил страницу Properties - Application , в которой в качестве целевой структуры указано 3.5. Затем я нашел статью на MSDN, в которой говорится, что это особенность C # 4 в VS2010. ( Статья MSDN -> Именованные и необязательные аргументы )
Может кто-нибудь помочь уточнить это для меня. C # 4 не требует .Net4? Что являются ФАКУЛЬТАТИВНЫМИ ПАРАМЕТРАМИ ЧАСТИ?
Спасибо.
Если вы скомпилируете это и проверите вывод с помощью такого инструмента, как ILDASM, вы увидите, что необязательный параметр просто реализуется путем добавления атрибута к метаданным, который описывает формальные параметры метода. Пока этот класс атрибутов доступен на целевой платформе, не должно возникнуть проблем с использованием сгенерированного кода на платформе нижнего уровня.
Версия языка не зависит от версии фреймворка. Для C# они работают в основном параллельно, т.е. C# 4 и framework 4.0 поставлялись с Visual Studio 2010. (Однако версии 3.5 C# не существует.)
С VB номера версий другие, так как VB 7 был первым Версия VB.NET. Итак, VB 10 выходит одновременно с framework 4.0.
Необязательные параметры — это языковая функция, представленная в C# 4. Когда вы используете VS 2010, вы используете C# 4, даже если вы ориентируетесь на платформу 2.0, поэтому вы можете использовать все функции C# 4.
C# 4.0 входит в состав Visual Studio 2010, и компилятор C# понимает необязательные параметры. Так что да, определение языка C# 4.0 отличается от .NET 4.0. Я предполагаю, что метод с необязательными параметрами, скомпилированный для .NET 3.5, будет отображать перегруженные методы при открытии, например. VS 2008