Согласно CA1026: параметры по умолчанию не должны использоваться Я не должен использовать параметры по умолчанию.
MSDN говорит не подавлять сообщение:
Не подавляйте предупреждение от этого
править.
Однако, мне интересно ..., если я включу CLSC-совместимую вариацию метода, могу ли я подавить это сообщение? Или имеет 2 варианта одного и того же метода, один со всеми параметрами по умолчанию, один пустой, будет вызывать проблемы?
public class Foo
{
public Foo()
: this(0)
{
}
[CLSCompliant(false)]
[SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")]
public Foo(Int32 id = 0)
{
//...
}
}
Это была бы нормальная ситуация, чтобы игнорировать предложение MSDN? Я четко обозначил метод (конструктор) как CLSCompliant(false)
и предоставляю метод (конструктор), который не принимает никаких значений по умолчанию.
Примечание: кажется, что это на месте, потому что:
Компилятор игнорирует значения
параметры по умолчанию для Managed
Расширение для C ++, когда оно обращается
управляемый код.
... так, мне интересно, если я скомпилирую таким образом, это вызовет проблемы, так как теперь у меня есть два конструктора, которые могут принимать 0 параметров?