int型可从char赋值



我注意到

int number = 'a';

是一个合理的c#语句

但是表达式

typeof(int).IsAssignableFrom(typeof(char))

返回false。这不是自相矛盾吗?

这不是矛盾吗?

不。c#提供了从charint的隐式转换,但是如果你看一下Type.IsAssignableFrom的文档,它的返回值是:

true,如果c和当前类型代表相同的类型,或者当前类型在c的继承层次中,或者当前类型是c实现的接口,或者如果c是泛型类型参数而当前类型代表c的约束之一,或者如果c代表值类型而当前类型代表Nullable<c>。如果这些条件都不为真,则为False,或者c为null。

这些条件都不为真,因此返回false

你问的问题略有不同。c#中的可赋值值集通常比CLR中的可赋值类型集更宽松。

最新更新