更新:2007 年 11 月

错误消息

成员“name”重写“method”。在运行时有多个重写候选项。将调用哪个方法取决于具体的实现。

有些方法参数的唯一区别在于是 ref 还是 out,对于这些参数,无法在运行时加以区分。

避免此警告

  • 为其中一个方法提供不同的名称或参数数目。

示例

下面的代码将生成 CS1957:

 复制代码
// 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;
    }
}