CA1026: не следует использовать параметры по умолчанию
TypeName |
DefaultParametersShouldNotBeUsed |
CheckId |
CA1026 |
Категория |
Microsoft.Design |
Критическое изменение |
Критическое изменение |
Причина
Тип, видимый снаружи, содержит видимый снаружи метод, использующий параметр по умолчанию.
Описание правила
Методы, использующие параметры по умолчанию, разрешены по спецификации CLS, однако компиляторы могут не учитывать значения, присвоенные этим параметрам. В коде, написанном для компиляторов, которые не учитывают значения параметров по умолчанию, должны быть явным образом предоставлены аргументы для всех параметров по умолчанию. Для однородного работы с различными языками программирования следует заменять методы, использующие параметры по умолчанию, на перегрузки методов, предоставляющие параметры по умолчанию.
Компилятор не учитывает значения параметров по умолчанию для управляемого расширения C++ при доступе к управляемому коду. Компилятор Visual Basic поддерживает методы с параметрами по умолчанию, использующими ключевое слово Optional (Visual Basic).
Устранение нарушений
Чтобы устранить нарушение этого правила, замените методы, использующие параметры по умолчанию, на перегрузки методов, предоставляющие параметры по умолчанию.
Отключение предупреждений
Для этого правила отключать вывод предупреждений не следует.
Пример
В следующем примере показан метод, использующий параметры по умолчанию, и перегруженные методы, обеспечивающие аналогичную функциональность.
Imports System
<Assembly: CLSCompliant(True)>
Namespace DesignLibrary
Public Class DefaultVersusOverloaded
Sub DefaultParameters(Optional parameter1 As Integer = 1, _
Optional parameter2 As Integer = 5)
' ...
Console.WriteLine("{0} : {1}", parameter1, parameter2)
End Sub
Sub OverloadedMethod()
OverloadedMethod(1, 5)
End Sub
Sub OverloadedMethod(parameter1 As Integer)
OverloadedMethod(parameter1, 5)
End Sub
Sub OverloadedMethod(parameter1 As Integer, parameter2 As Integer)
' ...
Console.WriteLine("{0} : {1}", parameter1, parameter2)
End Sub
End Class
End Namespace
Связанные правила
CA1025: замените повторяющиеся аргументы массивом параметров