C# foreach,额外条件语句
对不起,希望没有人因为一个noob问题而给我打分,我还没有一本C#ref book>你必须使用if/break或for循环。foreach循环几乎是有意限制的,因为该点只是在可枚举集合*上迭代。如果想要更简洁的循环控制,可以使用for循环、while循环或do while循环 *实际上,任何具有GetEnumerator()方法的对象都可以使用:C# foreach,额外条件语句,c#,C#,对不起,希望没有人因为一个noob问题而给我打分,我还没有一本C#ref book>你必须使用if/break或for循环。foreach循环几乎是有意限制的,因为该点只是在可枚举集合*上迭代。如果想要更简洁的循环控制,可以使用for循环、while循环或do while循环 *实际上,任何具有GetEnumerator()方法的对象都可以使用: foreach (string gig in giggles.Take(4)) { //.. } 这样做的目的是创建一个新的枚举器,该枚举器
foreach (string gig in giggles.Take(4))
{
//..
}
这样做的目的是创建一个新的枚举器,该枚举器仅限于来自giggles
的前四项Take()
是LINQ扩展方法之一,因此它与条件有点不同,但结果是相同的
基本上,您只能通过操纵集合来实现许多事情。以下是您特别要求的代码:
int i = 0;
foreach (string gig in giggles.Where( x => i <= 4))
{
lblDo.Text = gig;
i++;
}
inti=0;
foreach(string gig in giggles.Where(x=>i在这种情况下,您应该将其重构为for循环而不是foreach循环
foreach
不基于条件,而是对IEnumerable的每个项进行一次操作。for
则专门设计用于处理条件语句
我会这样写:
string[] giggles = new string[6] { "one", "two", "three", "four", "five", "Six" };
for (int i = 0; i < 4; ++i)
{
lblDo.Text = giggles[i];
}
string[]giggles=新字符串[6]{“一”、“二”、“三”、“四”、“五”、“六”};
对于(int i=0;i<4;++i)
{
lblDo.Text=giggles[i];
}
如果“咯咯笑”是您从其他地方引入的内容,并且可能少于4个元素,则您可能需要:
for (int i = 0; i < giggles.Length && i < 4; ++i)
{
lblDo.Text = giggles[i];
}
for(int i=0;i
是否改用for循环
for(int i = 0; i < 4 || i < giggles.Count; i++)
{
giggles[i].doSomething();
}
for(int i=0;i<4 | | i
尝试在循环内使用if
块。如果需要,使用break
关键字退出循环:
例子:
这实际上取决于您要做什么。在本例中可以使用Take()
string[] giggles = new string[6] { "one", "two", "three", "four", "five", "Six" };
foreach (string gig in giggles.Take(4))
{
lblDo.Text = gig;
}
但是,如果您想要例如以“f”开头的字符串,您可能需要使用where
foreach (string gig in giggles.Where(s => s.StartsWith("f") ))
{
Console.WriteLine(gig);
}
如果是事实,foreach循环可以使用额外的条件。
Where函数可以包含不影响列表本身的条件:
根据您的需要,您可以使用以下内容:
int i = 0;
foreach (var gig in giggles.Where( p => i < 4 ))
{
...
i++;
}
你想让额外的条件控制什么?上面的预期输出是什么?@Chris Shain:看起来他只想包括前四个元素。你是说string-gig-in-giggles&&i<4
?@Ani-是的,抱歉><现在编辑这本身就很优雅,但对于C#的新用户来说,这并不能真正解释是的,foreach不使用条件,并且是一种非标准的方法来尝试这样做…这很好,但它没有回答我的问题:(我需要一个额外的条件语句。foreach(string gig in giggles&&flag==true){blahblah..setflag}@Joey再次感谢您的建议:)@尼克:现在再看一遍;现在描述的方法与您最初想要的方法非常接近(如果/中断),那么它将是的替代方法。@nicklamart:Foreach的用法听起来很像——“对于此集合中的每个元素…”,另一方面,它是用于(设置;条件;步骤操作)。。。
foreach (string gig in giggles.Where(s => s.StartsWith("f") ))
{
Console.WriteLine(gig);
}
int i = 0;
foreach (var gig in giggles.Where( p => i < 4 ))
{
...
i++;
}
bool saveOk = true;
foreach ( var item in myList.Where( p=> saveOk ))
{
saveOk = saveTheItem(item);
}