C#中的数组大小(长度)

时间:2010-05-16 13:49:41

标签: c# arrays size

如何在C#中确定数组的大小(项目的长度/数量)?

9 个答案:

答案 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].Lengthc[1].Lengthc[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 = 0countItemsInArray++用于对数组的每次分配。

(刚用new X[number]创建的数组具有已分配的X类型的number个项目(引用)的所有空间,例如,您可以将其分配给内部的任何位置作为您的第一次分配,例如(如果{ {1}} = 100,变量名称= numbera

我不知道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这样的代码将无法工作或产生大量项目而不进行跟踪)