int i=1;
long longOne=i; //assignment works fine
//...but
bool canAssign=(typeof(long).IsAssignableFrom(typeof(int))); //false
Run Code Online (Sandbox Code Playgroud)
为什么是canAssign
假的?
Mat*_*les 20
看一下Reflector中的方法,看起来这个方法用于确定继承而不是兼容性.
例如,如果您有一个实现接口的类,那么如果您这样做,该方法将返回true
(typeof(interface).IsAssignableFrom(typeof(class))
Bol*_*ock 11
将int
a 分配给a时long
,所有发生的都是隐式转换.longOne
是一个实际的long
(好像你初始化它1L
),而不是int
伪装成一个long
,如果你得到漂移.
也就是说,int
(或Int32
)和long
(或Int64
)在继承或实现方面没有关系; 它们恰好是可转换的,因为它们都是整数类型.
在IsAssignableFrom
返回true,如果类型相同,或者如果式工具或继承它。
Along
不继承int
,因此该方法返回 false。
当您int
为 along
赋值时,它不仅仅是一个赋值。编译器还会自动添加代码以将int
值转换为long
值。
归档时间: |
|
查看次数: |
13441 次 |
最近记录: |