如果条件在foreach循环内

时间:2013-05-23 18:59:18

标签: c#

bool isexist = false;
string mytest="A";
 foreach (TestClass test in tester)
  {                                                                 
        if(mytest =="A")
        {
          isexist = true;
        }
       //rest of the code 
       Methodcall(isexist);

  }
public void Methodcall(bool set)
{ 
  if(set)
  string +="This is any issue";
}

在上面的代码中,我想在这个循环中检查我的if条件只有一次&想在Methodcall& amp;在下一个循环中我想每次在methodcall中传递false,因为我想打印这只是一个问题。

4 个答案:

答案 0 :(得分:2)

bool first = true;// To do the first time
foreach (TestClass test in tester)
{
    if (first && mytest == "A")// Check if first time
    {
        first = false; // To skip the next times
        isexist = true;
    }
    //rest of the code 
    Methodcall(isexist);

}

但也许这就是你要找的东西:

bool bool1 = true;
foreach (TestClass test in tester)
{
        //rest of the code 
        Methodcall(bool1);
        bool1 = false;
}

答案 1 :(得分:0)

看看OP的评论:

if(tester.contains("A"))  
{  
    isExist=true;  
}  

foreach (TestClass test in tester)  
{  
    ...
}  

检查是否包含,即使根据数据类型,这将强制进行完整的迭代。

答案 2 :(得分:0)

我可以在这里看到两种可能的解决方案:

  1. 您的意思是仅运行一次if (mytest == "A")语句,这意味着您希望将其置于循环中。这是不言而喻的,因为正确的循环将不止一次地执行任何操作,并且由于每次都会评估mytest,因此该语句永远不会更改。在这种情况下, Woot4Moo 的答案可能是最好的。

  2. 您的意思是if (test == "A"),它会评估每个TestClass对象,以便搜索“A”的等效性,而不是每次都评估“mytest”。

  3. 同样,你的问题有点令人困惑,特别是因为每个变量都被某种形式的'test'所取代。也许您可以告诉我们更多关于代码的目的?

答案 3 :(得分:0)

我收集你真正想要的是测试你列表中每个成员的某些条件。如果该测试至少失败一次,您希望稍后根据该失败调用for循环中的方法,但是在迭代中再次调用它:

bool testFail = true;
foreach(TestClass test in tester)
{
    bool yourTestCondition = performTest(test); // Your test here.
    if(testFail && (yourTestCondition))
    {
        testFail = false;
    }
    MethodCall(testFail && (yourTestCondition));
}