CA2223:成员不应只是返回类型不同
类型名 |
MembersShouldDifferByMoreThanReturnType |
CheckId |
CA2223 |
类别 |
Microsoft.Usage |
是否重大更改 |
是 |
原因
两个公共或受保护成员具有除返回类型以外都相同的签名。
规则说明
虽然公共语言运行时允许使用返回类型区分其余部分都相同的成员,但该功能不包含在公共语言规范中,也不是各种 .NET 编程语言中的共同功能。 如果各成员之间仅返回类型不同,则开发人员和开发工具可能无法正确区分它们。
如何解决冲突
若要修复与该规则的冲突,请更改各成员的设计以便仅凭其名称和参数类型即可区分它们,或者不公开这些成员。
何时禁止显示警告
不要禁止显示此规则发出的警告。
示例
以 Microsoft 中间语言 (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