这个if-else-else逻辑可以改写成更整洁的东西吗?

gss*_*s11 2 .net c# boolean-logic

我能用更简单,更易读的方式编写以下逻辑吗?以下是我需要的,但它非常凌乱:

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;
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Ray*_*nos 20

if (isChanged) return;

switch (Status) {
   case "": 
       CancelClose(); 
       break;
   case "saving": 
       // IsChanged = false;
       break;
}
Run Code Online (Sandbox Code Playgroud)

这几乎和它一样整洁.请注意,因为如果isChanged为true,则返回,您可以进一步假设isChanged为false.


Cha*_*ion 12

这有点清洁:

if (IsChanged)
{

}
else if (Status == "saving")
{

}
else if (Status == "")
{

}
else
{

}
Run Code Online (Sandbox Code Playgroud)

我建议你使用一个enum来表示状态.这将允许您的代码强类型.

public enum Status
{
    Closing,
    Saving,
    Changed,
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用一个好的switch语句来决定要采取的操作.

switch (_status)
{
    case Status.Saving:
        break;
    case Status.Closing:
        break;
    case Status.Changed:
        break;
    default:
        break;
}
Run Code Online (Sandbox Code Playgroud)