Ron*_*ing -1 .net c# arrays multidimensional-array
我将2D数组的字符串定义为
string[][] input_data;
Run Code Online (Sandbox Code Playgroud)
我可以计算行数,input_data.GetLength(0)
但如果我input_data.GetLength(1)
用来获取列数,我总是得到
System.IndexOutOfRangeException未处理Message = Index超出了数组的范围.Source = mscorlib StackTrace:在System.Array.GetLength(Int32维度)...
我还注意到在调试时,当我将鼠标悬停在我的数组上时(在插入所有数据之后),它只显示第一个值(行数)input_data| {string[18][]}
,如果我继续展开数组,那么它显示所有18列数据与列数据,如下所示:
如何获得列数?(在这种情况下是139)
你发布的是一个锯齿状的数组,而不是一个多维数组.它是包含其他数组的一维数组.没有第二个维度,所以你不能使用data.GetLength(1)
.每行可以具有不同数量的列.
您可以使用data.Max(r=>r.Length)
或获取每行的最小或最大列数 data.Min(r=>r.Length)
,例如:
var s=new string[][]{
new[] {"a","b"},
new[] {"a"}
};
Console.WriteLine("{0} {1}",s.Max(r=>r.Length),s.Min(r=>r.Length));
Run Code Online (Sandbox Code Playgroud)
将打印
2 1
Run Code Online (Sandbox Code Playgroud)
要指定多维数组,需要使用以下[,]
语法:
var s=new string[,]{
{"a","b"},
{"c","d"},
{"e","f"}
};
Console.WriteLine("{0} {1}",s.GetLength(0),s.GetLength(1));
Run Code Online (Sandbox Code Playgroud)
这将返回:
3 2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1799 次 |
最近记录: |