读书人

c#不支持根据返回值重载? 日散100解

发布时间: 2012-01-03 22:16:06 作者: rapoo

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() ");
}
}



public class B:A
{
public B(){}

public override void f()
{
System.Console.WriteLine( "B.f() ");
}
}
public class C:B
{
public C(){}

public new string f()
{
System.Console.WriteLine( "New.f() ");
return "f ";
}
}

class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
A a=new A();
B b=new B();
C c=new C();
a.f();
b.f();
c.f();
B bb=(B)c;
bb.f();
string d=c.f();
Console.WriteLine( "d= "+d);
Console.ReadLine();
}
}
看看结果,思考下为什么。
[解决办法]

那种语言都不支持。


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

那么 编译的 东西 肯定是 混乱的...
--------------------------------------
up
[解决办法]
照楼主的语气,似乎某种语言支持所谓返回值重载是的。。呵呵。。期待楼主创造出这种新语言
[解决办法]
没看懂lz的代码,迷糊中

读书人网 >C#

热点推荐