【问题标题】:Overloading by return type? [duplicate]按返回类型重载? [复制]
【发布时间】:2013-11-17 12:08:39
【问题描述】:
public class test
{
    public void xov() { return; }
    public string xov() { return null; }
    public int xov() { return 0; } 
}

public class p
{
    public p()
    {
        test v = new test();
        v.xov();// Here i cann't use defined overloads :(  
    }   
} 

我可以通过参数重载方法,但为什么不能通过返回类型重载方法?

【问题讨论】:

    标签: c# .net syntax-error


    【解决方案1】:

    返回类型不被视为方法签名的一部分。也就是说,如果方法仅在返回类型上有所不同,则它们不能被重载。

    【讨论】:

      【解决方案2】:

      打电话

      int x =  Add(5,6);
      

      可能不同于:

      string y = Add(5,6);
      

      但是如果没有人读取返回类型呢?

      Add(5,6);
      

      编译器是如何知道调用了哪个 add 的? 所以这个选项是不合法的。

      【讨论】:

        【解决方案3】:

        方法的返回类型不是方法签名的一部分 出于方法重载的目的。然而,它是其中的一部分 在确定 a 之间的兼容性时方法的签名 委托及其指向的方法。

        Link to MSDN Documentation

        【讨论】:

          猜你喜欢
          • 2012-03-23
          • 2014-09-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多