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,因为我想打印这只是一个问题。
答案 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)
我可以在这里看到两种可能的解决方案:
您的意思是仅运行一次if (mytest == "A")
语句,这意味着您不希望将其置于循环中。这是不言而喻的,因为正确的循环将不止一次地执行任何操作,并且由于每次都会评估mytest
,因此该语句永远不会更改。在这种情况下, Woot4Moo 的答案可能是最好的。
您的意思是if (test == "A")
,它会评估每个TestClass
对象,以便搜索“A”的等效性,而不是每次都评估“mytest”。
同样,你的问题有点令人困惑,特别是因为每个变量都被某种形式的'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));
}