Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# int是否可以从char赋值?_C#_.net_Reflection - Fatal编程技术网

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
赋值。当您以这种方式分配它时,会有一个隐式转换,这是完全不同的,所以请参见“谢谢”。这个方法比它的名字复杂得多。