Поделиться через


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