C#的array.length从0开始吗?

时间:2016-07-26 12:31:08

标签: c# arrays

我知道当你引用一个数组时,它从0开始,但是array.length是从0开始还是从1开始?

因为如果我将数组大小指定为10,我将其引用为0-9,这是否意味着array.length是0-9?

我问,因为我使用array.length作为随机生成数字的最大大小,但我这样做

randomArrayPointer = randomIntNum( 0 , ( posPercents.Length - 1 ) ); //generates a random number that fits the arrays range
if( randomArrayPointer < posPercents.Length ) //ensures the integer is less than the length of the array
{
    return ( posPercents [ randomArrayPointer ] );
}
else
{
    return ( posPercents [ 0 ] );
}

这是我的方法randomIntNumber(I +为最大值,因为当指定1到10作为Random()的输入时,它会给我一个介于0-9之间的数字)

public static int randomIntNum( int min , int max )
{
    if( max != 1 & ( max != ( min + 1 ) ) ) //if max isn't 1 and max isn't the minimum + 1
    {
        max = max - 1; //remove 1, this corrects the random generator so that the parameters sent don't need adjusting
    }
    int newInt;
    newInt =  rnd.Next( min , max );
    return ( newInt );
}

编辑:

现在这是我的方法,谢谢大家。

    public static double randomPercentChange( Boolean? positive )
    {
        if( positive == true )
        {
            return ( posPercents [ rnd.Next( posPercents.Length ) ] );
        }
        else if( positive == false )
        {
            return ( negPercents [ rnd.Next( negPercents.Length ) ] );
        }
        else if( positive == null )
        {
            return ( 1 );
        }
        return 1;
    }

3 个答案:

答案 0 :(得分:6)

如果数组为空,则它包含0个元素,长度为0。

如果你的数组在0索引中有1个元素,那么它的长度等于1。

如果你的数组在0和1个索引中有2个元素,那么它的长度等于2。

依旧......

答案 1 :(得分:0)

Array.Length指的是数组的大小,即它可以容纳多少个元素。索引它们时,数组基于0,因此示例迭代看起来像......

for(var i = 0; i < myArray.Length; i++)
{
   var elm = myArray[i];
   //do something with the element
}

答案 2 :(得分:-1)

我想你的问题是,&#34;为什么数组中的最后一个值是posPercents.Length而不是posPercents.Length = 10?&#34;

由于数组基于零,10,但最后一个值不在索引9。它位于索引posPercents.Length - 1,因此其索引为{{1}}。