5

我注意到

int number = 'a';

是一个健全的 C# 语句

但是那个表情

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

返回假。这不是矛盾吗?

4

2 回答 2

13

这不是矛盾吗?

没有。C# 提供了从charto的隐式转换int,但是如果您查看Type.IsAssignableFrom它的文档说明返回值:

如果 c 和当前 Type 表示相同的类型,或者如果当前 Type 在 c 的继承层次结构中,或者如果当前 Type 是 c 实现的接口,或者如果 c 是泛型类型参数并且当前 Type 表示,则为 true c 的约束之一,或者如果 c 表示值类型并且当前 Type 表示Nullable<c>. 如果这些条件都不为真,或者 c 为空,则为假。

这些条件都不成立,所以它返回false.

于 2013-03-06T17:16:12.057 回答
1

你问的问题略有不同。C# 中的可分配集通常比CLR 中 的可分配类型集更宽松。

于 2013-03-06T17:16:46.230 回答