C# C中的错误元素输出

C# C中的错误元素输出,c#,arrays,console,C#,Arrays,Console,我提前表示歉意,但我对C相当陌生,在这种情况下,我在Unity中使用过它,但从未单独使用过 我试图创建一个字符串数组,在一个循环中,有另一个数组,比如说,一个评级系统int元素。 不幸的是,我的问题似乎就在某个层面上 代码如下: using System; public class Test { public static void Main() { string [] arr1 = new string[] {"a","b","c","d","e"}; int a =

我提前表示歉意,但我对C相当陌生,在这种情况下,我在Unity中使用过它,但从未单独使用过

我试图创建一个字符串数组,在一个循环中,有另一个数组,比如说,一个评级系统int元素。 不幸的是,我的问题似乎就在某个层面上

代码如下:

using System;

public class Test
{
  public static void Main()
  {
    string [] arr1 = new string[] {"a","b","c","d","e"};
    int a = 0;
    foreach (var element in arr1)
    {          
        int [] myRate = new int [5] {1,2,3,4,5};
        int [] rating = myRate;
        a = rating[0];
        Console.WriteLine (element +": " + (rating[a]));
    } a++;
  }
}
我的问题是所有元素的输出都应该是1,因为我仍在进行增量,但这是输出:

a: 2
b: 2
c: 2
d: 2
e: 2
我试图尽可能减少代码,以找出问题所在,这就是为什么它是一种极简主义,但我仍然无法解决它。当我将0改为1时,输出为2,依此类推。如果我把它改成4,它会说它越界了。
非常感谢您的帮助,并提前向您表示感谢

在循环中,何时执行此操作:

a = rating[0];
然后a变为1,因为它是int数组中的第一项。然后将其写入控制台:

rating[a]
…这是因为a是1:

…数组中的第二项是2,这就是为什么会得到此输出

输出1的两种方式:

foreach (var element in arr1)
{          
    int [] myRate = new int [5] {1,2,3,4,5};
    int [] rating = myRate;
    a = 0;
    Console.WriteLine (element +": " + (rating[a]));
} a++;


作为一个旁注,你可以考虑在你的循环之外创建INT[],因为你每次迭代都创建同一个数组,除非你实际上打算在每个新的迭代中创建具有不同值的数组。

< P>因为包含1号。p> 评级数组索引上的数字1是2

如果要打印数字1,应从索引0开始。即:

Console.WriteLine (element +": " + (rating[0]));

如果你想要1作为答案,那么写下:

Console.WriteLine (element +": " + a);

因为a=评级[0];i、 e.数组的第一个元素,其值为1

您正在使用:

Console.WriteLine (element +": " + (rating[a]));
i、 e.评级[1],因为a的值为1


所以rating[1]是数组的第二个元素,它的值是2。实际上,我想打印1。请看我的答案。。如果要打印1,请使用或评级[0]而不是评级[a]。@WillyDavidJr感谢您的帮助!很乐意帮忙@Freakofif:我试图用零初始化a,但问题仍然存在。有什么建议吗?如果很简单的话。我用两个选项编辑了我的答案,选择一个最适合你的需要。您的逻辑似乎有点混乱,但由于您减少了代码并告诉我们您仍在处理它,因此我没有对代码进行太多更改。很抱歉,我刚刚理解了您描述的问题。所以问题在于我如何使用元素的索引,对吗?如何修复它?@Freakofif如果您需要输出为1,因为1是数组中的第一项,您需要使用类似于评级[0]的东西,因为0将是数组中的第一项。因此,您要么直接使用评级[0],要么确保a=0;。谢谢你的帮助!您只需更改1行注释a=rating[0];。
Console.WriteLine (element +": " + a);
Console.WriteLine (element +": " + rating[0]);
Console.WriteLine (element +": " + (rating[a]));