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的代码,迷糊中