C# - 将循环内的数组初始化为不同数组中的值

时间:2013-03-26 04:22:46

标签: c# arrays loops

我有一个名为str的数组,它由一系列以逗号分隔的对组成。例如,str [0]是“Bill,John”。我试图循环通过str并将逗号中的每一对拆分为名为First和Second的数组。我很难实现这个目标,如果有人能提供帮助我会非常感激。这是我正在使用的代码:

while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

我遇到的问题是第一个[a]和第二个[a]行。我无法弄清楚这些变量应该是什么数据类型,似乎我为每个类型得到一个不同的错误,我在while循环之前声明它们。

以下是循环中变量实现的错误:
如果我将它们声明为数组:“不能将带有[]的索引应用于类型为'System.Array'的表达式”“

Array first;
Array second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

as int:“无法将带有[]的索引应用于类型为'int'的表达式”

int first;
int second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

as strings:“属性或索引器'string.this [int]'无法分配给 - 它只读”

string first;
string second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

as vars:“必须初始化隐式类型的局部变量”(此错误在声明上,而不在循环本身内。如果我初始化它,它会隐式转换为上述数据类型之一并抛出错误与他们联系,我已经提到了)

var first;
var second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

2 个答案:

答案 0 :(得分:3)

基于新编辑:

好的,从不使用类型Array。它是内部的。要使用数组,您需要使用括号表示法(这看起来很奇怪,但它来自C,C ++和Java。)

看起来像这样:

string [10] first;

但是,在更现代的C#中,您可以使用泛型。它们在现代面向对象的世界中更有意义。要使用它们,请指定它们所操作的类型。在许多方面,它们的行为就像您期望阵列一样,但具有附加功能。要使用它们,在您的示例中,它看起来像这样:

ArrayList<string> first = new ArrayList<string>();
ArrayList<string> second = new ArrayList<string>();

foreach(string a in str)
{
    var Pairs = a.Split(',');
    first.Add(Pairs[0]);
    second.Add(Pairs[1]);
}

在C#中执行此操作的简单方法是使用foreach循环。

int index = 0;

foreach(string a in str)
{
    var Pairs = a.Split(',');
    first[index] = Pairs[0];
    second[index] = Pairs[1];
    index++;
}

然而,你的代码可以工作 - 除了我没有看到长度来自哪里。也许你的代码应该是这样的?

int a = 0;
while (a < str.Length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

答案 1 :(得分:0)

试试这个

string[] str = new string[1];

        str[0] = "Bill,John";

        string[] first = new string[1];
        string[] second = new string[1];
        string[] pairs = new string[1];

        int a = 0;
        while(a<str.Length)
        {
            pairs = str[a].Split(',');
            first[a] = pairs[0];
            second[a] = pairs[1];
            Console.WriteLine(first[a] + " - " + second[a]);
            a++;
        }

        int i = 0;
        foreach (string item in str)
        {
            pairs = item.Split(',');
            int k = pairs.Count();
            first[i] = pairs[0];
            second[i] = pairs[1];
            Console.WriteLine(first[i] + " - " + second[i]);
            i++;
        }