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