Не следует использовать параметры по умолчанию
Обновлен: Ноябрь 2007
TypeName |
DefaultParametersShouldNotBeUsed |
CheckId |
CA1026 |
Категория |
Microsoft.Design |
Критическое изменение |
Критическое изменение |
Причина
Тип, видимый снаружи, содержит видимый снаружи метод, использующий параметр по умолчанию.
Описание правила
Методы, использующие параметры по умолчанию, разрешены по спецификации CLS, однако компиляторы могут не учитывать значения, присвоенные этим параметрам. В коде, написанном для компиляторов, которые не учитывают значения параметров по умолчанию, должны быть явным образом предоставлены аргументы для всех параметров по умолчанию. Для однородного работы с различными языками программирования следует заменять методы, использующие параметры по умолчанию, на перегрузки методов, предоставляющие параметры по умолчанию.
Компилятор не учитывает значения параметров по умолчанию для C# и управляемого расширения для 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
Связанные правила
Замените повторяющиеся аргументы массивом параметров