コンパイラの警告 (レベル 1) CS1957
メンバー 'name' は、'method' をオーバーライドします。 実行時にオーバーライドされる可能性のある候補が複数あります。 どのメソッドが呼び出されるかは実装に依存します。
ref
または out
のいずれであるかによってのみ変化するメソッドのパラメーターを、実行時に区別することはできません。
- いずれかのメソッドに別の名前または異なる数のパラメーターを指定します。
次のコードでは CS1957 が生成されます。
C#
// cs1957.cs
class Base<T, S>
{
public virtual string Test(out T x) // CS1957
{
x = default(T);
return "Base.Test";
}
public virtual void Test(ref S x) { }
}
class Derived : Base<int, int>
{
public override string Test(out int x)
{
x = 0;
return "Derived.Test";
}
static int Main()
{
int x;
if (new Derived().Test(out x) == "Derived.Test")
return 0;
return 1;
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。