我注意到
int number = 'a';
是一个健全的 C# 语句
但是那个表情
typeof(int).IsAssignableFrom(typeof(char))
返回假。这不是矛盾吗?
我注意到
int number = 'a';
是一个健全的 C# 语句
但是那个表情
typeof(int).IsAssignableFrom(typeof(char))
返回假。这不是矛盾吗?
这不是矛盾吗?
没有。C# 提供了从char
to的隐式转换int
,但是如果您查看Type.IsAssignableFrom
它的文档说明返回值:
如果 c 和当前 Type 表示相同的类型,或者如果当前 Type 在 c 的继承层次结构中,或者如果当前 Type 是 c 实现的接口,或者如果 c 是泛型类型参数并且当前 Type 表示,则为 true c 的约束之一,或者如果 c 表示值类型并且当前 Type 表示
Nullable<c>
. 如果这些条件都不为真,或者 c 为空,则为假。
这些条件都不成立,所以它返回false
.
你问的问题略有不同。C# 中的可分配值集通常比CLR 中 的可分配类型集更宽松。