英語で読む

次の方法で共有


コンパイラの警告 (レベル 1) CS1957

メンバー 'name' は、'method' をオーバーライドします。 実行時にオーバーライドされる可能性のある候補が複数あります。 どのメソッドが呼び出されるかは実装に依存します。

ref または out のいずれであるかによってのみ変化するメソッドのパラメーターを、実行時に区別することはできません。

この警告を回避するには

  1. いずれかのメソッドに別の名前または異なる数のパラメーターを指定します。

次のコードでは 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;  
    }  
}