【发布时间】:2013-02-08 17:00:28
【问题描述】:
给定以下代码:
using System;
namespace Test721
{
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine(new A()); //prints 666
Console.WriteLine(new B()); //prints 666
Console.ReadLine();
}
}
public class A
{
public static implicit operator int(A a)
{
return 666;
}
}
public class B : A
{
public static implicit operator double(B b)
{
return 667;
}
}
}
结果与 cmets 中的一样 - 两行都打印 666。
我希望 Console.WriteLine(new B()); 写 667,而 double 重载 Console.WriteLine。
为什么会这样?
【问题讨论】: