我注意到了
int number = 'a';
是一个声音C#声明
但那个表达
typeof(int).IsAssignableFrom(typeof(char))
返回false。这不是一个矛盾吗?
答案 0 :(得分:13)
这不是矛盾吗?
不。 C#提供了从char
到int
的隐式转换,但如果您查看Type.IsAssignableFrom
的文档,则会说明返回值:
如果c和当前Type表示相同的类型,或者当前Type在c的继承层次结构中,或者当前Type是c实现的接口,或者c是泛型类型参数且是current Type表示c的约束之一,或者如果c表示值类型,则当前Type表示
Nullable<c>
。如果这些条件均不为真,或者c为空,则返回false。
这些条件均不属实,因此返回false
。
答案 1 :(得分:1)
您提出的问题略有不同。 C#中可分配的值的集合通常比CLR中的可分配类型的集合更宽松。