如何将变量读取到数组?

时间:2019-06-03 20:13:24

标签: c# arrays

我正在学习C#。我知道如何在C ++中做到这一点,但是我得到了这一行代码的例外:

string
  

System.IndexOutOfRangeException:“索引在数组的边界之外。”

v[i] = int.Parse(Console.ReadLine()); 

我想将其从C ++转换为C#:

 int[] v = new int[n];

 for (int i = 1; i <= n; i++)
 {
     v[i] = int.Parse(Console.ReadLine());
 }

还有更多代码,但我认为这与该问题无关。

2 个答案:

答案 0 :(得分:0)

C ++不检查数组索引。另一方面,C#会执行此检查,如果尝试访问索引范围超出相应范围的元素,则会出现异常。

正如所提到的here

  

在C ++中,语法上正确的是超过了有效范围   数组的索引。由于访问   超出范围的元素不会导致编译错误,但可以   在运行时导致错误。之所以被允许是因为   索引检查会减慢程序执行速度。

请注意动词“ 可以”,但不确定。但是,绝不建议您在编写C ++代码时不要总是进行自己的检查,因为这可能会引起很大的问题。

答案 1 :(得分:-2)

只需添加将与Christos' explanation一起使用的代码即可。

解决方案:现在,您还从0开始循环,这不会导致异常,并且您不会跳过第一个元素。
请注意,这里您有<而不是<=。这是因为数组中的最后一个元素的索引为n-1。

int[] v = new int[n];

for (int i = 0; i < n; i++)
{
    v[i] = int.Parse(Console.ReadLine());
}

正如已经提到的,有关此内容的详细说明/比较(在c ++和c#之间),请参见Christos' answer