dato il codice seguente:regole di conversione per operatori di conversione di overload
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;
}
}
}
i risultati sono come nei commenti - entrambe le linee stampate 666.
mi aspetto Console.WriteLine(new B());
di scrivere 667, mentre non v'è a double
sovraccarico di Console.WriteLine
.
Perché sta succedendo?
La migliore risposta che potrei aspettarmi, grazie. Accetterò in un minuto, quando SO mi consente di farlo;] –
Sarei corretto supponendo che queste regole facciano pensare al compilatore che un 'float' è superiore a un' double'? Sembrerebbe abbastanza brillante. – supercat