如何确定C#中数组的大小(长度/项目数)?
如何确定C#中数组的大小(长度/项目数)?
Answers:
如果是一维数组a
,
a.Length
将给出的元素数量a
。
If 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
所有3个成员的长度都不同。在这种情况下,如之前c.Length
将指示的元件的数目c
(3),以及c[0].Length
,c[1].Length
和c[2].Length
将是3,图2和7,分别。
int[][]
; ;-)
[,]
和之间的区别[][]
似乎并不明确,因此,仍然有必要指出,[][]
从您的答案来看,它不是多维数组。
b.GetLength[0] is 3 and b.GetLength[1] is 5
应该b.GetLength(0) and b.GetLength(1)
。
在这种情况下,您可能需要Length:
int sizeOfArray = array.Length;
但是,由于这是一个基本问题,毫无疑问,您还有更多类似的问题,而不仅仅是告诉您答案,我宁愿告诉您如何自己找到答案。
Visual Studio智能感知
当您键入变量的名称并按键时,.
它将显示该对象可用的所有方法,属性,事件等的列表。当您突出显示成员时,它会为您提供有关其功能的简短说明。
按F1
如果找到可以满足您需要的方法或属性,但不确定,可以将光标移到该方法或属性上,然后按F1键以获得帮助。在这里,您可以获得更详细的描述以及相关信息的链接。
搜索
搜索词size of array in C#
提供了许多链接,这些链接可以告诉您问题的答案等等。程序员必须学习的最重要技能之一是如何查找信息。自己找到答案通常会更快,特别是如果之前已经问过相同的问题。
使用教程
如果您刚刚开始学习C#,则会发现遵循本教程更容易。我可以推荐MSDN上的C#教程。如果您想读书,我建议您使用Essential C#。
堆栈溢出
如果您无法自行找到答案,请随时在堆栈溢出中发布问题。但是,如果您表明您已努力先找到自己的答案,我们将不胜感激。
yourArray.Length
:)
到目前为止,错过的是我突然感到恼火的事情:
我如何知道数组中的项目数量?是.Length
平等的.Count
一个列表?
答案是:已放入new X[number]
您创建的X类型数组中的X类型项目数量必须自己承担!
例如。使用计数器:int countItemsInArray = 0
以及countItemsInArray++
对数组的每次分配。
(刚创建的数组new X[number]
具有number
已分配的类型X的项目(引用)的所有空间,您可以将其分配为内部的任何位置,例如,第一次分配(如果number
= 100且变量名称= a
)a[50] = new X();
。
我不知道C#是否在创建时指定数组中每个位置的初始值,如果没有指定,或者您无法将其与之比较(因为它可能是您自己已放入数组中的值),则您如果您不从以下位置开始顺序分配0
(在所有情况下,所有小于countItemsInArray
。)
在您问题的数组大小(长度/项数)中,取决于/是要代表“替代”还是“除以”,后者仍然必须涵盖(我刚刚给出的“项数”为“项目数量”和其他项所给出.Length
的值,它们对应number
于我上面的代码中的值):
C#有一个sizeof
运算符(https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/operators/sizeof)。使用内置类型(例如int)是安全的(并且仅对类型(而不是变量)进行操作)。因此,以字节为单位b
的类型数组的大小为。int
b.Length * sizeof(int)
(由于如上所述在创建时已经分配了数组的所有空间,并且sizeof
仅在类型上起作用,所以没有类似的代码sizeof(variable)/sizeof(type)
会起作用或产生大量项目而不进行跟踪。)