2009-03-20 3 views
1

Является ли реализация дополнительных параметров C# 4 такой же, как VB.NET, необязательный параметр компилируется на сайте вызова (может вызвать проблемы с управлением версиями)?C# 4 необязательный параметр

ответ

4

Yes.

+2

Это добавляет серьезную слабость к C#. Тот факт, что факультативный реализован на сайте вызова, а не как средство перегрузки, означает, что сборки, которые не построены друг против друга, не будут работать, если будет изменен дополнительный парматер. Я не понимаю, зачем нам это нужно. Перегрузка дает ту же функциональность, и подписи методов никогда не изменяются невидимо. – stevehipwell

+0

Значение по умолчанию является частью определения функции. Изменение его так же плохо, как изменение имени функции. Это так же верно, когда по умолчанию выпекается в перегрузку, как при экспонировании через необязательный параметр. –

3

Согласно SamNg, C#'s default arguments are is compiled at the call site, аналогично параметрам по умолчанию в C++.

Да, это может привести к проблемам с версией. Однако необязательные параметры следует использовать там, где это имеет смысл. Во многих случаях это означает, что метод или конструктор передает null или построенный по умолчанию класс.

+0

FIXME: Кто такой Сэм Нг? Является ли он разработчиком M $? – strager

+1

Я думаю, что все блоггеры на blogs.msdn.com являются сотрудниками MS (возможно, некоторые из них являются MVP?). –

Смежные вопросы