日期:2014-05-20  浏览次数:21124 次

c#不支持根据返回值重载? 日,散100
编译器错误   CS0111

类“class”已经定义了一个具有相同参数类型的名为“member”的成员

类包含两个相同的成员声明。

下面的示例生成   CS0111:

//   CS0111.cs
namespace   x
{
      abstract   public   class   clx
      {
            public   abstract   void   f();
      }

      public   class   cly   :   clx
      {
            public   void   f()
            {
            }
            override   public   void   f()   //   CS0111,   duplicate   declaration
            {
            }
            public   static   int   Main()
            {
                  return   0;
            }
      }
}


------解决方案--------------------
沙发接分先
------解决方案--------------------
有什麼可以支持返回值重載的????????


還沒有聽過..........
------解决方案--------------------
public void f()
{
}
override public void f() // CS0111, duplicate declaration
{
}
?
------解决方案--------------------
,接分
------解决方案--------------------
当然不可能根据返回值重载.

因为方法调用不一定必须使用返回值.

比如你声明int f()

代码中你可以直接调用f();而不是必须写成 int i=f();

如果你两个方法仅仅返回值不同,那么当你直接使用f();编译器根本不知道到底该调用哪个方法.

至少我不知道有哪个语言支持返回值不同重载.

------解决方案--------------------
那种语言都不支持。
------解决方案--------------------
^^
------解决方案--------------------
前几天有个家伙把这当成.net的大bug发帖子了
------解决方案--------------------
妈的,接分走人
------解决方案--------------------
那种语言都不支持。


要是按 楼主 的意愿 ....

那么 编译的 东西 肯定是 混乱的...
------解决方案--------------------
这个自然,不然程序员还怎么干!
------解决方案--------------------
日也没用!这个得学习!
------解决方案--------------------
Up
------解决方案--------------------
只有一种语言支持返回值类型不同得重载
IL
------解决方案--------------------
走!
------解决方案--------------------
接分接分
------解决方案--------------------
。。。
例:自己体会
public class A
{
public A(){}

public virtual void f()
{
System.Console.WriteLine( "A.f() ");
}
}