我能以更简单,更易于阅读的方式编写以下逻辑吗?以下是我需要的,但它非常混乱:
if (IsChanged == true)
{
return;
}
else if (Status == "" && IsChanged == false) // Executed when the close (x) button is pressed, as the Status string is not yet set to a real value...
{
CancelClose();
}
else if (IsChanged == false && Status == "saving") // saving logic falls to here...
{
// IsChanged = false;
}
由于
答案 0 :(得分:20)
if (isChanged) return;
switch (Status) {
case "":
CancelClose();
break;
case "saving":
// IsChanged = false;
break;
}
这和它一样整洁。请注意,因为如果isChanged为true,则返回,您可以进一步假设isChanged为false。
答案 1 :(得分:12)
这有点清洁:
if (IsChanged)
{
}
else if (Status == "saving")
{
}
else if (Status == "")
{
}
else
{
}
我建议您使用enum
来表示状态。这将允许您的代码被强类型化。
public enum Status
{
Closing,
Saving,
Changed,
}
然后你可以使用一个很好的switch
语句来决定采取什么行动。
switch (_status)
{
case Status.Saving:
break;
case Status.Closing:
break;
case Status.Changed:
break;
default:
break;
}
答案 2 :(得分:4)
if(IsChanged)
return;
if(Status == "saving")
{
// save
}
else if(string.IsNullOrEmpty(Status))
{
CancelClose();
}
答案 3 :(得分:2)
如果IsChanged == true,则返回,因此在其他ifs中不需要它。
if (IsChanged == true)
return;
switch (Status)
{
case "":
CancelClose();
break;
case "saving":
break;
}
答案 4 :(得分:1)
是:
if (IsChanged) return;
if (String.IsNullOrEmpty(Status)) CancelClose();
答案 5 :(得分:1)
我建议:
if (IsChanged)
{
return;
}
if (CurrentStatus == Status.None)
{
CancelClose();
return;
}
if (CurrentStatus == Status.Saving)
{
// IsChanged = false;
}
答案 6 :(得分:1)
if(!IsChanged) {
if (Status == "saving") // saving logic falls to here...
{
// IsChanged = false;
}
else if (Status == "") // Executed when the close (x) button is pressed, as the Status string is not yet set to a real value...
{
CancelClose();
}
} else {
return;
}
答案 7 :(得分:0)
可以简化为
if (IsChanged)
{
return;
}
else if (Status == "") // Executed when the close (x) button is pressed, as the Status string is not yet set to a real value...
{
CancelClose();
}
else if (Status == "saving") // saving logic falls to here...
{
// IsChanged = false;
}
第一次检查时不需要== True,因为它已经是真或假。
,你不需要在其他选择中检查错误,因为如果不是这样,那么它就是假的。答案 8 :(得分:0)
if (IsChanged) return;
if (Status == "saving")
{
//IsChanged = false;
}
else if (Status = "")
{
CancelClose();
}
我会避免用大写字母开始你的变量名。
答案 9 :(得分:0)
if (IsChanged)
return;
if (String.IsNullOrEmpty(Status)) // better use this unless you would like a
CancelClose(); // nullPointerException
else if (Status.equals("Saving"))
// whatever you want for save
答案 10 :(得分:0)
我不熟悉c#,但是it supports the conditional operator
condition ? first_expression : second_expression;
由于我不熟悉c#,我不会尝试重新编写代码,但无论如何,三元运算符可以在某些地方带来令人满意的简洁。