Tag: 操作符

编译器使用显式转换为.NET类型将显式转换替换为我自己的类型?

我有以下代码: public struct Num { private readonly T _Value; public Num(T value) { _Value = value; } static public explicit operator Num(T value) { return new Num(value); } } … double d = 2.5; Num b = (Num)d; 这段代码编译,令我惊讶。 显式转换应该只接受一个byte ,而不是一个byte 。 但双重被接受了。 当我在转换器中放置断点时,我看到该value已经是值为2的byte 。 通过从double到byte的转换应该是显式的。 如果我用ILSpy反编译我的EXE,我会看到下一个代码: double d = 2.5; Program.Num b = (byte)d; […]