-10
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 中传递一次 true,并且在下一个循环中,我想每次在 methodcall 中传递 false,因为我想打印这只是一个问题。

4

4 回答 4

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

?

于 2013-05-23T19:25:49.010 回答
0

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

  1. 你的意思是if (mytest == "A") 只运行一次语句,这意味着你希望它进入循环。这是不言而喻的,因为一个适当的循环将不止一次地做任何事情,并且因为mytest每次都被评估,所以语句永远不会改变。在这种情况下,Woot4Moo的答案可能是最好的。

  2. 您的意思是说if (test == "A")which 将评估每个TestClass对象以搜索与“A”的等价物,而不是每次都评估“mytest”。

同样,您的问题有点令人困惑,尤其是因为每个变量都已替换为某种形式的“测试”一词。也许你可以告诉我们更多关于代码的目的?

于 2013-05-23T19:20:54.433 回答
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));
}
于 2013-05-23T19:30:57.407 回答
0

Looking at the OP's comment:

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

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

Check for inclusion, even though depending on the data type this will force a full iteration.

于 2013-05-23T19:02:06.280 回答