C# int是否可以从char赋值?
我注意到C# int是否可以从char赋值?,c#,.net,reflection,C#,.net,Reflection,我注意到 int number = 'a'; 这是一个合理的C#声明 但这就是表达方式 typeof(int).IsAssignableFrom(typeof(char)) 返回false。这不是矛盾吗 这不是矛盾吗 没有。C#提供了从char到int的隐式转换,但是如果您查看文档,它会声明返回值: 如果c和当前类型表示相同的类型,或者如果当前类型位于c的继承层次结构中,或者如果当前类型是c实现的接口,或者如果c是泛型类型参数且当前类型表示c的一个约束,则为true,或者,如果c表示一个值类
int number = 'a';
这是一个合理的C#声明
但这就是表达方式
typeof(int).IsAssignableFrom(typeof(char))
返回false。这不是矛盾吗
这不是矛盾吗
没有。C#提供了从char
到int
的隐式转换,但是如果您查看文档,它会声明返回值:
如果c和当前类型表示相同的类型,或者如果当前类型位于c的继承层次结构中,或者如果当前类型是c实现的接口,或者如果c是泛型类型参数且当前类型表示c的一个约束,则为true,或者,如果c表示一个值类型,而当前类型表示Nullable
。如果这些条件都不为真,或者如果c为null,则为false
这些条件都不是真的,因此它返回
false
您所问的问题略有不同。C#中的可分配值集通常比CLR中的可分配类型集更为宽松 “a”将由编译器转换为int,因此它不是。int
不能从char
赋值。当您以这种方式分配它时,会有一个隐式转换,这是完全不同的,所以请参见“谢谢”。这个方法比它的名字复杂得多。