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',正如你明显意识到的那样:-) –