C#交错数组:编译器无法隐式转换类型';字符[]和#x27;至';int[]';。为什么?

C#交错数组:编译器无法隐式转换类型';字符[]和#x27;至';int[]';。为什么?,c#,char,int,implicit-conversion,jagged-arrays,C#,Char,Int,Implicit Conversion,Jagged Arrays,由于C#编译器可以将类型“char”隐式转换为“int”,我希望它也能将类型“char[]”隐式转换为“int[]” 但是,以下代码返回编译时错误 无法提供此转换是否有技术原因?这只是语言的定义方式。C#可以定义为从旧数组自动创建新数组,并逐项转换元素。当然,这将创建一个独立的数组。其中一个阵列的突变不会传播到另一个阵列。这让开发人员感到困惑。这可能就是C#不这么做的原因 在任何情况下,int[]都不能被视为char[],因为两者的内存布局不兼容。位的重新解释不足以执行转换 这个问题与锯齿阵列无

由于C#编译器可以将类型“char”隐式转换为“int”,我希望它也能将类型“char[]”隐式转换为“int[]”

但是,以下代码返回编译时错误


无法提供此转换是否有技术原因?

这只是语言的定义方式。C#可以定义为从旧数组自动创建新数组,并逐项转换元素。当然,这将创建一个独立的数组。其中一个阵列的突变不会传播到另一个阵列。这让开发人员感到困惑。这可能就是C#不这么做的原因

在任何情况下,
int[]
都不能被视为
char[]
,因为两者的内存布局不兼容。位的重新解释不足以执行转换


这个问题与锯齿阵列无关。这个问题可以通过两种类型的变量来完全解决,分别是
int[]
char[]
。这使问题更容易理解。

new[]{'a'}
更改为
newint[]{'a'}
int[][] jaggedArray = new int[][]
{
  new[]{'a'},
  new[]{1}
};