mit dem folgenden Code:Umrechnungsregeln für überlastet Umwandlung Betreiber
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;
}
}
}
die Ergebnisse sind wie in den Kommentaren - beide Linien drucken 666.
I Console.WriteLine(new B());
667 zu schreiben erwarten würde, während es a double
Überlastung von .
Warum passiert das?
Die beste Antwort, die ich erwarten konnte, danke. Ich werde in einer Minute akzeptieren, wenn SO mir erlaubt;] –
Würde ich richtigerweise annehmen, dass diese Regeln den Compiler dazu bringen würden zu denken, dass ein 'float' einem' double' überlegen ist? Das wäre ziemlich brillant. – supercat