如何在C#中确定数组的大小(项目的长度/数量)?
答案 0 :(得分:131)
如果它是一维数组a
,
a.Length
将提供a
。
如果b
是一个矩形多维数组(例如,int[,] b = new int[3, 5];
)
b.Rank
将给出尺寸数(2)和
b.GetLength(dimensionIndex)
将获得任何给定维度的长度(维度的基于0的索引 - 因此b.GetLength(0)
为3且b.GetLength(1)
为5)。
有关详细信息,请参阅System.Array documentation。
正如@Lucero在评论中指出的那样,有一个“锯齿状数组”的概念,它实际上只不过是一个(通常是单维的)数组的单维数组。
例如,可以有以下内容:
int[][] c = new int[3][];
c[0] = new int[] {1, 2, 3};
c[1] = new int[] {3, 14};
c[2] = new int[] {1, 1, 2, 3, 5, 8, 13};
请注意c
的3个成员都有不同的长度。
在这种情况下,与c.Length
之前一样,c
,(3)和c[0].Length
,c[1].Length
和c[2].Length
的元素数量将为3,分别为2和7。
答案 1 :(得分:28)
您可以查看documentation for Array以找出此问题的答案。
在这种特殊情况下,您可能需要Length:
int sizeOfArray = array.Length;
但由于这是一个基本问题,你无疑会有更多这样的问题,而不是仅仅告诉你答案我宁愿告诉你如何自己找到答案。
Visual Studio Intellisense
当您键入变量名称并按.
键时,它会显示该对象上可用的所有方法,属性,事件等的列表。当您突出显示某个成员时,它会简要介绍它的作用。
按F1
如果您找到的方法或属性可能符合您的要求,但您不确定,可以将光标移到它上面并按F1获取帮助。在这里,您可以获得更详细的描述以及相关信息的链接。
搜索强>
搜索字词size of array in C#
提供了许多链接,可以告诉您问题的答案以及更多内容。程序员必须学习的最重要技能之一是如何查找信息。自己找到答案通常会更快,特别是如果之前已经提出相同的问题。
使用教程
如果您刚开始学习C#,您会发现更容易学习C ++教程。我可以在MSDN上推荐C# tutorials。如果你想要一本书,我建议Essential C#。
Stack Overflow
如果您无法自行找到答案,请随时在Stack Overflow上发布问题。但是,如果您表明您已经尽力自己找到答案,我们将不胜感激。
答案 2 :(得分:12)
用于1维数组
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
用于多维数组
int length = listItems.Rank;
获得1维的大小
int length = listItems.GetLength(0);
答案 3 :(得分:8)
使用Length
属性。
int[] foo = new int[10];
int n = foo.Length; // n == 10
答案 4 :(得分:7)
yourArray.Length
:)
答案 5 :(得分:5)
对于单维数组,使用Length
属性:
int size = theArray.Length;
对于多维数组,Length
属性返回数组中的项目总数。您可以使用GetLength
方法获取其中一个维度的大小:
int size0 = theArray.GetLength(0);
答案 6 :(得分:3)
在大多数情况下,使用“长度”和“计数”。
数组:
int[] myArray = new int[size];
int noOfElements = myArray.Length;
输入列表数组:
List <int> myArray = new List<int>();
int noOfElements = myArray.Count;
答案 7 :(得分:1)
它是这样的: 1D:
type[] name=new type[size] //or =new type[]{.....elements...}
2D:
type[][]name=new type[size][] //second brackets are emtpy
然后当你使用这个数组时:
name[i]=new type[size_of_sec.Dim]
或者您可以声明类似矩阵的内容
type[ , ] name=new type [size1,size2]
答案 8 :(得分:0)
到目前为止,错过的是我突然被激怒了:
我如何知道数组中的项目数量? .Length
是否等于列表的.Count
?
答案是:放入new X[number]
创建的X类型数组中的X类型物品的数量您必须随身携带!
例如。使用计数器:int countItemsInArray = 0
和countItemsInArray++
用于对数组的每次分配。
(刚用new X[number]
创建的数组具有已分配的X类型的number
个项目(引用)的所有空间,例如,您可以将其分配给内部的任何位置作为您的第一次分配,例如(如果{ {1}} = 100,变量名称= number
)a
。
我不知道C#是否在创建时指定数组中每个位置的初始值,如果不是,或者您无法将其与之比较(因为它可能是您自己已放入数组中的值) ),如果您没有从a[50] = new X();
开始依次分配(在这种情况下,所有小于0
的位置都将分配给您),则您还必须跟踪已分配给阵列中的哪些位置。 )
在您的问题中,数组的大小(长度/项数)取决于 / 是要表示“替代”还是“除以”后者仍然必须覆盖(我刚刚给出的“项目数量”为“项目数量”,其他人给出的countItemsInArray
对应于我上面的代码中.Length
的值):
C#具有number
运算符(https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof)。使用内置类型(例如int)是安全的(并且仅对类型(而不是变量)进行操作)。因此,类型为sizeof
的数组b
的字节大小将为int
。
(由于如上所述在创建时已经分配了数组的所有空间,并且b.Length * sizeof(int)
仅在类型上起作用,因此sizeof
这样的代码将无法工作或产生大量项目而不进行跟踪)