我有一个数组被返回,但由于我是编程新手,我无法弄清楚如何读取每个值。有人可以指出我正确的方向吗?
我的代码如下。
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;
}
全部谢谢
答案 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版本。