比如double Area()int Area()

解决方案 »

  1.   

    不能重载, 在你调用的时候是这样的  
      Area();
    这时候不能确定返回值类型,也就是说不能确定调用的是哪个方法,所以不能重载
      

  2.   

    他俩有不明确调用,比如int i = Area(),他不知道调用哪个
      

  3.   

    本帖最后由 caozhy 于 2012-05-01 14:15:58 编辑
      

  4.   


    真的很想删除。不过这些言论并没有违反csdn社区用户行为准则,因此无法删除。或许发帖的人不过就是想骗一点分,而骗分的目的是为了下载资源,其实专家分没有这个用途……导致csdn现在灌水严重,充斥各种垃圾回复。版主能做的只能不断科普和纠正那些错误的观点。
      

  5.   

    +C#不正面支持返回值重载。不过操作符重载中,可以看到返回值重载的使用。
    比如下面的例子,从il代码可以看出两个方法声明除了返回值以外完全一样。具体调用哪个取决于返回值:public class A
    {
        public static implicit operator int(A a) { return 0; }
        public static implicit operator string(A a) { return ""; }
        // .method public hidebysig specialname static  int32  op_Implicit(class A a) cil managed
        // .method public hidebysig specialname static string  op_Implicit(class A a) cil managed
    }
    public class Test
    {
       static void Main()
       {
          A a = new A();
          int i = a;      //<--返回值重载
          string s = a;   //<--返回值重载
       }
    }
      

  6.   

    一.方法的重载:
    a.方法名一定要相同。   
    b.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。   
      1.如果参数个数不同,就不管它的参数类型了;   
      2.如果参数个数相同,那么参数的类型或者参数的顺序必须不同。   
    c.方法的返回类型、修饰符可以相同,也可不同。
    也就是说

    double Area()int Area()
     不是重载,方法的重载跟返回值与修饰符关系。
    二.操作符的重载
    C#中,操作符重载总是在类中进行声明,并且通过调用类的成员方法来实现。
    代码参考:14L的一元操作符重载。
    半夜睡不着,看帖子 ... ...
      

  7.   

    结贴了,经过测试,C#不能这样用下面的代码编译会出错
    using System;public class MyMath
    {
     long Subtract( )
    { }
     int Subtract( )
    { }
    }至于其他面向对象语言,自己去测