次のコードがあるとします。
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を出力します。
のオーバーロードがConsole.WriteLine(new B());
あるときに、667 を書き込むことを期待します。double
Console.WriteLine
なぜそれが起こっているのですか?