CA1026 - Может ли это сообщение быть подавлено, если на месте предоставляется альтернативный метод, соответствующий CLS? - PullRequest
1 голос
/ 21 июня 2011

Согласно 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 параметров?

1 Ответ

2 голосов
/ 22 июня 2011

На самом деле у вас нет 2 конструкторов без аргументов.Значение по умолчанию используется только во время компиляции, и у компилятора, который поддерживает значения параметров по умолчанию, обычно также есть правило для определения метода, на который нужно ориентироваться.что у вас есть переопределение без параметра?Основная причина, по которой людям нравятся значения параметров по умолчанию, заключается в том, что им не нужно беспокоиться о записи перегрузок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...