次の方法で共有


CA2223: メンバーは、戻り値の型以外にも異なる点がなければなりません

TypeName

MembersShouldDifferByMoreThanReturnType

CheckId

CA2223

[カテゴリ]

Microsoft.Usage

互換性に影響する変更点

あり

原因

2 つのパブリック メンバーまたはプロテクト メンバーのシグネチャが、戻り値の型以外は同一です。

規則の説明

共通言語ランタイムでは、メンバーの区別に戻り値の型のみを使用することを許可していますが、この機能は共通言語仕様ではなく、.NET プログラミング言語の共通機能でもありません。戻り値の型によってのみメンバーが区別されると、開発者や開発ツールにおいて正しく区別されないことがあります。

違反の修正方法

この規則違反を修正するには、メンバーのデザインを変更し、名前とパラメーターの型だけで一意になるようにするか、メンバーを公開しないようにします。

警告を抑制する状況

この規則による警告は抑制しないでください。

使用例

次の Microsoft Intermediate Language (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