void Main()
{
C.F();
}
public class C
{
public static void F()
{
var a = new A { i = 1, d = 2.5m };
var b = new B(a);
I(b);
D(b);
}
static void I(int i) { Console.WriteLine("int is: " + i); }
static void D(decimal d) { Console.WriteLine("decimal is: " + d); }
}
public class A
{
public int i;
public decimal d;
}
public class B
{
A _a;
public B(A a) { _a = a; }
public static implicit operator int(B b) { return b._a.i; }
public static implicit operator decimal(B b) { return b._a.d; }
}
OUTPUT: int是:1個 小數是:2.5
註釋出:
//public static implicit operator decimal(B b) { return b._a.d; }
OUTPUT: int是:1個 小數是:1
第二個版本運行時發生了什麼,兩種情況都輸出1?
我認爲你是對的 - 我認爲這不會編譯BEC。 D(2.5)沒有編譯,但我只是嘗試了D(2.5m),並且確定它已經工作了......謝謝! –
@ Gabriel:可能是因爲'2.5'是一個'double',正如你明顯意識到的那樣:-) –