CA2223: члены должны различаться не только возвращаемым типом
TypeName |
MembersShouldDifferByMoreThanReturnType |
CheckId |
CA2223 |
Категория |
Microsoft.Usage |
Критическое изменение |
Критическое изменение |
Причина
Два открытых или защищенных члена имеют подписи, которые отличаются только типом возвращаемого значения.
Описание правила
Среда CLR позволяет использовать типы возвращаемого значения для различения в остальном совпадающих членов, однако эта функция не совместима со спецификацией CLS и поддерживается не всеми языками программирования .NET.Если члены отличаются только типом возвращаемого значения, разработчики и средства разработки могут неправильно различать эти типы.
Устранение нарушений
Чтобы устранить нарушение данного правила, измените структуру членов таким образом, чтобы они были уникальными с точки зрения их имен и типов параметров, или не предоставляйте эти члены.
Отключение предупреждений
Для этого правила отключать вывод предупреждений не следует.
Пример
В следующем примере кода MSIL показан тип, который нарушает данное правило.Обратите внимание, что данное правило не может быт нарушено в C# или Visual Basic .NET.
.namespace UsageLibrary
{
.class public auto ansi beforefieldinit ReturnTypeTest
extends [mscorlib]System.Object
{
.method public hidebysig instance int32
AMethod(int32 x) cil managed
{
// Code size 6 (0x6)
.maxstack 1
.locals init (int32 V_0)
IL_0000: ldc.i4.0
IL_0001: stloc.0
IL_0002: br.s IL_0004
IL_0004: ldloc.0
IL_0005: ret
} // end of method ReturnTypeTest::AMethod
.method public hidebysig instance string
AMethod(int32 x) cil managed
{
// Code size 10 (0xa)
.maxstack 1
.locals init (string V_0)
IL_0000: ldstr "test"
IL_0005: stloc.0
IL_0006: br.s IL_0008
IL_0008: ldloc.0
IL_0009: ret
} // end of method ReturnTypeTest::AMethod
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 1
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method ReturnTypeTest::.ctor
} // end of class ReturnTypeTest
} // end of namespace UsageLibrary