int型可从char赋值
本文关键字:char 赋值 int | 更新日期: 2023-09-27 18:02:40
我注意到
int number = 'a';
是一个合理的c#语句
但是表达式
typeof(int).IsAssignableFrom(typeof(char))
返回false。这不是自相矛盾吗?
这不是矛盾吗?
不。c#提供了从char
到int
的隐式转换,但是如果你看一下Type.IsAssignableFrom
的文档,它的返回值是:
true,如果c和当前类型代表相同的类型,或者当前类型在c的继承层次中,或者当前类型是c实现的接口,或者如果c是泛型类型参数而当前类型代表c的约束之一,或者如果c代表值类型而当前类型代表
Nullable<c>
。如果这些条件都不为真,则为False,或者c为null。
这些条件都不为真,因此返回false
。
你问的问题略有不同。c#中的可赋值值集通常比CLR中的可赋值类型集更宽松。