Mic*_* DN 0 .net c# if-statement
我有以下代码(示例代码),它非常有效.我想如果还有其他更好的方法,我们可以用更少的代码更准确地编写以下代码片段.
if(language == "English")
{
if(Student_id == 0)
{
someFunction();
}
else
{
if(getMarks(Student_id) > 50 || subjectCount > 1 || projectCount > 0)
{
someFunction();
}
}
}
Run Code Online (Sandbox Code Playgroud)
另外,请注意,如果Student_id是0,getMarks(Student_id)抛出错误
Ian*_*Ian 11
(有关更复杂的情况,请查看此内容)
我建议您的案例是:
用较少的嵌套if-else块写它
将条件与相同的操作结合起来(在您的情况下是someFunction)
利用在C#中实现的短路评估(也在许多其他编程语言中实现 - 如Martheen在他的评论中所述).
if(language != "English")
return; //assuming nothing below
if(Student_id == 0 || getMarks(Student_id) > 50 || subjectCount > 1 || projectCount > 0)
someFunction(); //if someFunction is identical, this can be done
Run Code Online (Sandbox Code Playgroud)
如果您要检查其他语言,或者如果您要根据自己的行为独立完成某些事情language == "English",那么您不应该在if (language != "English")声明中返回:
if(language == "English") {
if(Student_id == 0 || getMarks(Student_id) > 50 || subjectCount > 1 || projectCount > 0)
someFunction(); //if someFunction is identical, this can be done
}
//Something else which must be done
Run Code Online (Sandbox Code Playgroud)编辑(编辑问题后):
对于附加条件,您可以简单地将其放在之后,Student_id == 0因为C#将始终首先评估最左边的if条件(对于其||短路评估).
为了说明:对于你的情况,这是好的:
if(Student_id == 0 || getMarks(Student_id) > 50){
//if Student_id == 0 is true, then getMarks(Student_id) wouldn't get evaluated
}
Run Code Online (Sandbox Code Playgroud)
但这不是好事:
if(getMarks(Student_id) > 50 || Student_id == 0){
//if Student_id is 0, then getMarks(Student_id) would throw exception before Student_id == 0 is evaluated
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
722 次 |
| 最近记录: |