c#正确的foreach语法来遍历List
本文关键字:遍历 List 语法 foreach | 更新日期: 2023-09-27 18:05:08
我一直在尝试使用foreach
来迭代对象的List
,似乎无法获得正确的语法。下面是一个简化的例子。
class foo
{
private int x = 1;
public foo(int y)
{
x = y;
}
public int X
{
get { return x; }
}
}
class bar
{
foo footest = new foo(3);
private List<foo> myfoo = new List<foo>();
public bar()
{
for (int i = 0; i < 3; i++)
{
myfoo.Add(footest);
}
}
/*Below is what I can't seem to get working. I want to write a method
that iterates through the list of foo objects and displays a property for
each one. The compiler gives an error under foreach that says "A get or
set accessor expected."
/*public void getall
{
foreach (bar Myfoo in myfoo) //error under foreach
{
Console.Write(Myfoo.X);
}*/
}
如果您试图创建一个属性,您将需要使用正确的语法,这就是错误告诉您的。如果你只是想创建一个方法,你需要在声明的末尾加上圆括号。试试这个
public void getall()
{
foreach (foo Myfoo in myfoo) //error under foreach
{
Console.Write(Myfoo.X);
}
}
编译错误报告是由于缺少括号,因此是无效的(或未解析为)方法声明。
public void getall () // every method declaration must have parenthesis
{
foreach (bar Myfoo in myfoo) {
Console.Write(Myfoo.X);
}
}
(还有其他问题,如"…不包含'X'的定义")
myFoo
是foo
的列表,因此您将通过它循环从列表中抓取foo
对象。Try: foreach(foo fooItem in myFoo){...}
除了上述关于括号的答案,您还需要注意以下内容:
在方法中尝试这样做来解决下一个错误:
foreach (var f in myfoo)
{
// do something with the 'f' here
}
或
foreach (foo f in myfoo)
{
// do something with the 'f' here
}
在您发布的代码中,您试图使用不正确的类型进行迭代。myfoo
的类型是List<foo>
,因此包含foo
对象的列表。当循环遍历该列表时,需要在列表中使用相同类型的对象,因此在本例中为foo
对象。