在Windows窗体应用程序中,类的List<>
将由方法检查,其返回类型为bool。
示例如果有100个类,只有1个类返回false
,那么它的另一个字段(Reqbool
)将是fals
e。当所有课程都Reqbool
返回时,true
只有true
。
有没有简单的方法可以解决这个问题?它表示异常未处理,每个false
返回它显示消息框。
bool Reqbool = true;
bool MiniReqbool;
if(MiniReqbool == false) { throw new Exception(); }
try
{
for (int i = 0; i < ImportList.Count; i++)
{
MiniMiniTest mitest = new MiniMiniTest();
MiniReqbool = mitest.ReqTest(ImportList[i], QValue);
}
}
catch (Exception)
{
Reqbool = false;
MessageBox.Show("Sorry points not found");
}
答案 0 :(得分:2)
在try catch之前抛出异常。如果在检查后放置if语句,则应该修复它。
bool Reqbool = true;
bool MiniReqbool;
try
{
for (int i = 0; i < ImportList.Count; i++)
{
MiniMiniTest mitest = new MiniMiniTest();
MiniReqbool = mitest.ReqTest(ImportList[i], QValue);
if(MiniReqbool == false) { throw new Exception(); }
}
}
catch (Exception)
{
Reqbool = false;
MessageBox.Show("Sorry points not found");
}
正如评论中所建议的那样,没有例外情况这样做会更好,这仍然可以像你这样工作一样完成。
bool Reqbool = true;
bool MiniReqbool = true;
for (int i = 0; i < ImportList.Count; i++)
{
MiniMiniTest mitest = new MiniMiniTest();
if(!mitest.ReqTest(ImportList[i], QValue)) { MiniReqbool = false; }
}
if (MiniReqbool == false)
{
Reqbool = false;
MessageBox.Show("Sorry points not found");
}
答案 1 :(得分:2)
只有当Reqbool
中的所有项目都返回false
ImportList
时,您才想将true
设置为mitest.ReqTest
。在这种情况下,您可以使用Linq和扩展方法All
:
MiniMiniTest mitest = new MiniMiniTest();
Reqbool = ImportList.All(il => mitest.ReqTest(il, QValue));
如果您想要每件新MiniMiniTest
项,可以使用以下内容:
for (int i = 0; i < ImportList.Count; i++)
{
MiniMiniTest mitest = new MiniMiniTest();
if (!mitest.ReqTest(ImportList[i], QValue))
{
Reqbool = false;
break;
}
}
或使用foreach
循环使其更简单:
foreach (var item in ImportList) //...
请注意以下代码:
bool MiniReqbool;
if(MiniReqbool == false) { throw new Exception(); }
总是会抛出异常,因为bool
的默认值为false
,所以我认为这不是您的实际代码。