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