다음을 통해 공유


CA2223: 멤버는 반환 형식 이외의 것도 달라야 합니다.

TypeName

MembersShouldDifferByMoreThanReturnType

CheckId

CA2223

범주

Microsoft.Usage

변경 수준

주요 변경

원인

두 public 또는 protected 멤버에 반환 값을 제외한 나머지가 모두 동일한 시그니처가 있습니다.

규칙 설명

공용 언어 런타임에서는 반환 값만 다르고 다른 면에서는 동일한 멤버를 구분할 수 있지만 이 기능은 공용 언어 사양에 해당되지 않으며 .NET 프로그래밍 언어의 공통 기능이 아닙니다. 멤버가 반환 값만 다를 경우 개발자 및 개발 도구가 이들을 제대로 구분하지 못할 수 있습니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 해당 이름 및 매개 변수 형식만으로 멤버가 고유한지 확인할 수 있도록 멤버의 디자인을 변경하거나, 멤버를 노출하지 마십시오.

경고를 표시하지 않는 경우

이 규칙에서는 경고를 표시해야 합니다.

예제

다음 예제에서는 MSIL(Microsoft Intermediate Language)에서 이 규칙을 위반하는 형식을 보여 줍니다. 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