C# foreach,额外条件语句

C# foreach,额外条件语句,c#,C#,对不起,希望没有人因为一个noob问题而给我打分,我还没有一本C#ref book>你必须使用if/break或for循环。foreach循环几乎是有意限制的,因为该点只是在可枚举集合*上迭代。如果想要更简洁的循环控制,可以使用for循环、while循环或do while循环 *实际上,任何具有GetEnumerator()方法的对象都可以使用: foreach (string gig in giggles.Take(4)) { //.. } 这样做的目的是创建一个新的枚举器,该枚举器

对不起,希望没有人因为一个noob问题而给我打分,我还没有一本C#ref book>你必须使用if/break或for循环。foreach循环几乎是有意限制的,因为该点只是在可枚举集合*上迭代。如果想要更简洁的循环控制,可以使用for循环、while循环或do while循环

*实际上,任何具有GetEnumerator()方法的对象都可以使用:

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);
}