Udostępnij za pośrednictwem


CA2223: Elementy członkowskie powinny różnić się bardziej, niż typem zwracanym

TypeName

MembersShouldDifferByMoreThanReturnType

CheckId

CA2223

Kategoria

Microsoft.Usage

Złamanie zmiany

Złamanie

Przyczyna

Dwóch członków publicznych lub chronione mają podpisy, które są identyczne, z wyjątkiem typ zwracany.

Opis reguły

Chociaż ogólnojęzykowe zezwala na używanie zwracanych typów rozróżnienie między identycznymi członków, ta funkcja nie jest w Common Language Specification, ani jest typową cechą.NET języków programowania.Gdy członkowie różnią się tylko typ zwracany, deweloperów i narzędzia deweloperskie może poprawnie rozróżnia je.

Jak naprawić naruszenia

Ustalenie naruszenie tej zasady, należy zmienić projekt członków, tak aby były unikatowe tylko na podstawie ich nazwy i typy parametrów lub nie będą uwidaczniać członków.

Kiedy do pomijania ostrzeżenia

Nie pomijaj ostrzeżenie od tej reguły.

Przykład

Poniżej przedstawiono przykład w Microsoft intermediate language (MSIL) pokazuje typ, który narusza reguły.Należy zauważyć, że ta reguła nie naruszone przy użyciu języka C# lub 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