我是C#的新手。我知道C和C ++语言。目前我有一个C#相关项目。所以,我只想了解C#的基本概念。
在C#中,如果我给出负数组索引,那么会发生什么?它是未定义的行为吗?
喜欢:
int [] arr = {1,2,3};
Console.WriteLine("{0}", arr[-1]);
答案 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' 的未处理异常。