C#中负数组索引的行为

时间:2018-02-03 13:58:51

标签: c# arrays

我是C#的新手。我知道C和C ++语言。目前我有一个C#相关项目。所以,我只想了解C#的基本概念。

在C#中,如果我给出负数组索引,那么会发生什么?它是未定义的行为吗?

喜欢:

int [] arr = {1,2,3};
Console.WriteLine("{0}", arr[-1]);

3 个答案:

答案 0 :(得分:10)

只要索引超出该数组的有效索引范围,您的程序就会抛出IndexOutOfRangeException异常。

如果你花了一秒钟尝试它,你会亲眼看到它。

答案 1 :(得分:0)

如果从索引范围之外访问数组,则会得到System.IndexOutOfRangeException。 您将获得任何负索引或任何索引大于或等于array.Length。

的异常

答案 2 :(得分:0)

int [] arr = {1,2,3};

编译器将内部的语法糖转换为

 int [] arr = new int[] {1,2,3};

所以arr长度由编译器自动计算为3。

编译器不允许您定义未知大小的数组。

int[] arr=new int[];//compiler error,array creation must have size.

以下声明

Console.WriteLine(arr[-1]);

将抛出类型' System.IndexOutOfRangeException' 的未处理异常。