为什么Visual Studio(或Resharper)没有警告超出范围的错误?

时间:2015-02-13 12:27:53

标签: c# visual-studio resharper

当我输入此代码时:

int[] test = new int[5];
test[5] = 7;

Visual Studio,Resharper也没有提醒我这个错误。这似乎很容易被发现?还有一个常见的错误......

也许在某些情况下检测到这种情况太复杂了,但在某些情况下看起来很简单。那么,有没有一个特定的原因,为什么这不会生成编译器或Resharper警告?

1 个答案:

答案 0 :(得分:2)

您忘记了Array.Resize功能。

如果开发人员在运行时调用该函数然后使用更高的索引,该怎么办。

class Program
{
    static void Main()
    {
    // Initialize array for example.
    char[] array = new char[4];
    array[0] = 'p';
    array[1] = 'e';
    array[2] = 'r';
    array[3] = 'l';

    // Display the array.
    for (int i = 0; i < array.Length; i++)
    {
        Console.Write(array[i]);
    }
    Console.WriteLine();

    // Resize the array from 4 to 6 elements.
    Array.Resize(ref array, 6);

    // Display the array that has been resized.
    for (int i = 0; i < array.Length; i++)
    {
        Console.Write(array[i]);
    }
    Console.WriteLine();
    }
}