在C#中,如何确定数组的大小(长度/项数)?
在C#中,如何确定数组的大小(长度/项数)?
如果它是一个一维数组 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文档。
正如@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
的三个成员具有不同的长度。
在这种情况下,与之前一样,c.Length
将指示 c
的元素数(3),而 c[0].Length
、c[1].Length
和 c[2].Length
分别为 3、2 和 7。int[][]
);-) - Lucerob.GetLength[0] is 3 and b.GetLength[1] is 5
为b.GetLength(0)和b.GetLength(1)
。 - yurisich在这种情况下,你可能需要使用Length:
int sizeOfArray = array.Length;
但是,由于这是一个非常基本的问题,而且您无疑还有许多类似的问题,因此我不仅要告诉您答案,还要告诉您如何自己找到答案。
Visual Studio Intellisense
当您键入变量名称并按下 .
键时,它会显示该对象上可用的所有方法、属性、事件等列表。当您突出显示成员时,它会给出简短的描述。
按F1键
如果您找到了可能做你想要的事情的方法或属性,但不确定,可以将光标移动到它上面并按F1获取帮助。在这里,您可以获得更详细的描述以及相关信息的链接。
搜索
搜索术语C#中数组的大小
会给出许多链接,告诉您问题的答案以及更多信息。程序员必须学习的最重要的技能之一是如何查找信息。如果之前已经有人问过同样的问题,那么自己找到答案通常更快。
使用教程
如果您刚开始学习C#,那么跟随教程会更容易。我可以推荐MSDN上的C#教程。如果您想要一本书,我建议看看Essential C#。
Stack Overflow
如果您无法自己找到答案,请随时在Stack Overflow上发布问题。但是,我们希望您先显示出自己已经努力寻找答案的努力。
对于一维数组
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
对于多维数组
int length = listItems.Rank;
获取一个维度的大小
int length = listItems.GetLength(0);
Length
、Rank
、GetLength
),我该在哪里找到文档? - Minh TranyourArray.Length
:)
Length
属性。int[] foo = new int[10];
int n = foo.Length; // n == 10
对于一个一维数组,您可以使用 Length
属性:
int size = theArray.Length;
对于多维数组,Length
属性返回数组中所有项的总数。您可以使用 GetLength
方法来获取其中一个维度的大小:
int size0 = theArray.GetLength(0);
数组:
int[] myArray = new int[size];
int noOfElements = myArray.Length;
类型化列表数组:
List <int> myArray = new List<int>();
int noOfElements = myArray.Count;
它应该是这样的: 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]
.Length
是否等同于列表的.Count
?new X[number]
创建的类型为X的数组中,您必须自己处理!int countItemsInArray = 0
并且每次分配给数组时 countItemsInArray++
。new X[number]
创建的数组已经分配了所有空间,可以将其分配给内部的任何位置作为第一个分配,例如(如果number
= 100,变量名=a
)a[50] = new X();
。)0
开始顺序分配(在这种情况下,小于countItemsInArray
的所有位置都将被分配)。.Length
对应于上面代码中的number
的值)。
C#有一个sizeof
运算符(https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof)。它对于内置类型(如int)是安全的(并且仅操作类型(而不是变量))。因此,类型为int
的数组b
的大小(以字节为单位)将是b.Length * sizeof(int)
。
由于数组的所有空间已经在创建时分配,就像上面提到的那样,而sizeof
只能用于类型,所以类似sizeof(variable)/sizeof(type)
的代码将无法工作或产生项的数量,除非进行跟踪。