给定以下代码:
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;
}
}
}
结果与评论中的一样 - 两行都打印 666。
我希望写667 Console.WriteLine(new B());
,而.double
Console.WriteLine
为什么会这样?