Параметры C # по умолчанию

Это, наверное, очень простой ответ для кого-то. У меня есть метод с необязательным параметром , например, так:

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? Что являются ФАКУЛЬТАТИВНЫМИ ПАРАМЕТРАМИ ЧАСТИ?

Спасибо.

11
задан Refracted Paladin 30 August 2010 в 16:24
поделиться

3 ответа

Если вы скомпилируете это и проверите вывод с помощью такого инструмента, как ILDASM, вы увидите, что необязательный параметр просто реализуется путем добавления атрибута к метаданным, который описывает формальные параметры метода. Пока этот класс атрибутов доступен на целевой платформе, не должно возникнуть проблем с использованием сгенерированного кода на платформе нижнего уровня.

5
ответ дан 3 December 2019 в 03:16
поделиться

Версия языка не зависит от версии фреймворка. Для 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.

2
ответ дан 3 December 2019 в 03:16
поделиться

C# 4.0 входит в состав Visual Studio 2010, и компилятор C# понимает необязательные параметры. Так что да, определение языка C# 4.0 отличается от .NET 4.0. Я предполагаю, что метод с необязательными параметрами, скомпилированный для .NET 3.5, будет отображать перегруженные методы при открытии, например. VS 2008

-1
ответ дан 3 December 2019 в 03:16
поделиться
Другие вопросы по тегам:

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