C#读取返回数组的每个值

时间:2009-04-07 12:11:50

标签: c# arrays

我有一个数组被返回,但由于我是编程新手,我无法弄清楚如何读取每个值。有人可以指出我正确的方向吗?

我的代码如下。

private void testToolStripMenuItem_Click(object sender, EventArgs e)
{
 foreach (int name in getNames()) //<----I'm wrong here I guess
 {
    MessageBox.Show(name.ToString());
 }
}

private ArrayList getNames()
{
 //some code...
 ..
 ...
 return names;
}

全部谢谢

6 个答案:

答案 0 :(得分:2)

首先,您不是返回数组,而是返回ArrayList实例。其次,为什么名称是int?当然你的意思是string?最后,如果您使用的是.NET 2.0或更高版本,则可以使用泛型来改进代码。因此,请使用List<string>而不是ArrayList

private void testToolStripMenuItem_Click(object sender, EventArgs e)
{
    foreach (string name in getNames())
    {
        MessageBox.Show(name);
    }
}

private List<string> GetNames()
{
    var names = new List<string>();
    names.Add("Kent");
    return names;
}

答案 1 :(得分:2)

这里的问题是getNames返回一个arraylist of objects - 而不是整数。

您可以使用此更改重写代码:

 foreach (object nameobj in getNames())
 {
    string name = (string)nameobj;
    MessageBox.Show(name);
 }

或者,您可以(并且应该)使用泛型来保持一切美观和整洁。这可能看起来像这个(未经测试的)代码:

private void testToolStripMenuItem_Click(object sender, EventArgs e)
{
 foreach (string name in getNames()) 
 {
    MessageBox.Show(name);
 }
}

private IList<string> getNames()
{
 //some code...
 List<string> names = new List<string>();
 names.Add("Scott");
 ..
 ...
 return names;
}

System.Collections.Generic添加一个使用。另外,正如其他人注意到的那样,我将其从string更改为int

答案 2 :(得分:0)

请尝试使用ArrayList

,而不是使用List<int>

我猜在foreach语句中,你正在遇到一个强制转换异常。很难说这是因为你遗漏了getNames()的主体。

答案 3 :(得分:0)

尝试返回int列表。像这样:

private List<int> getNames()
{
    //some code...
     ..
     ...
     return names;
}

或者,或者检查它是否真的在你的列表中,所以你没有做过像list.add(“5”)这样的事情。然后5将是一个字符串,而不是一个int。

答案 4 :(得分:0)

ArrayList将项目存储为对象。因此,您需要将其解包为所需类型(在您的情况下为int)。但为什么int而不是字符串的名字?

答案 5 :(得分:-1)

这可能会让你开始:

String key, val;

foreach (DictionaryEntry de in myArrayList)
{
     key = (String)de.Key;
     val = (MyObjectType)de.Value;
}

编辑:已更新,将IEnumerator版本删除为foreach版本。