C#交错数组:编译器无法隐式转换类型';字符[]和#x27;至';int[]';。为什么?
由于C#编译器可以将类型“char”隐式转换为“int”,我希望它也能将类型“char[]”隐式转换为“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#可以定义为从旧数组自动创建新数组,并逐项转换元素。当然,这将创建一个独立的数组。其中一个阵列的突变不会传播到另一个阵列。这让开发人员感到困惑。这可能就是C#不这么做的原因 在任何情况下,
int[]
都不能被视为char[]
,因为两者的内存布局不兼容。位的重新解释不足以执行转换
这个问题与锯齿阵列无关。这个问题可以通过两种类型的变量来完全解决,分别是
int[]
和char[]
。这使问题更容易理解。将new[]{'a'}
更改为newint[]{'a'}
int[][] jaggedArray = new int[][]
{
new[]{'a'},
new[]{1}
};