如何用一行代码将C#中的int[][]转换为int[,]?
一行代码将
int[][]转换为int[,]的解决方案 嘿,这个免费午餐的赌约太有劲儿了!虽然C#确实在代码高尔夫里天生吃亏,但能拼到这一步已经很牛了😉
要把交错数组int[][]转成二维数组int[,],而且要一行代码搞定,完全可以做到——前提是你的交错数组是规整的(也就是每个子数组长度相同,旋转立方体的结果肯定满足这个条件)。这里给你两种适配代码高尔夫场景的可行写法:
方法1:嵌套循环一行直写
这是最直接的方式,把交错数组的每个元素逐个复制到二维数组里,字符数控制得很紧凑:
int[,] twoD = new int[j.Length,j[0].Length];for(int i=0;i<j.Length;i++)for(int k=0;k<j[i].Length;k++)twoD[i,k]=j[i][k];
只要把j换成你那行代码生成的交错数组变量名就行,直接嵌到你的原有一行代码里也完全没问题。
方法2:用Array.CreateInstance压缩字符数
如果追求更极致的代码长度,可以借助Array.CreateInstance配合Array.Copy,比嵌套循环能少几个字符:
int[,] twoD=(int[,])Array.CreateInstance(typeof(int),new[]{j.Length,j[0].Length});for(int i=0;i<j.Length;i++)Array.Copy(j[i],0,twoD,i*j[0].Length,j[0].Length);
关键提醒:因为旋转立方体的结果肯定是N×N的方阵,不用考虑子数组长度不一致的情况,这两种写法都能完美运行。赶紧把这行嵌进去,赢下你的免费午餐吧!
内容的提问来源于stack exchange,提问作者Darkestlyrics
相关产品推荐
相关产品推荐

