优雅检查null并退出C#

Ais*_*war 6 c# null conditional coding-style

写这个的优雅方式是什么?

if (lastSelection != null)
{
    lastSelection.changeColor();
}
else
{
    MessageBox.Show("No Selection Made");
    return;
}
Run Code Online (Sandbox Code Playgroud)

changeColor() 是一个void函数,运行上面代码的函数也是一个void函数.

Bev*_*van 14

你可以通过扭转条件来减少混乱:

if (lastSelection == null)
{
    MessageBox.Show("No Selection Made");
    return;
}

lastSelection.changeColor();
Run Code Online (Sandbox Code Playgroud)


ove*_*ked 9

虽然我个人真的不喜欢在一个函数中有多个return语句,但根据我见过的防御性编程,你会捕获错误条件并退出,并让其他任何东西通过:

if(lastSelection == null)
{
    MessageBox.Show("No Selection Made");
    return;
}

lastSelection.changeColor();
Run Code Online (Sandbox Code Playgroud)

如果没有看到它所属的整个功能,我很难说我在自己的工作中如何做到这一点.