用于在条件下调用函数的更简洁的语法



我发现自己经常做以下类型的片段

if(bar != null)
   foo(bar)     // That is, pass in object 'bar' to function 'foo' if bar is not null

编辑:foo函数来自API,我无法访问它的代码。本质上,API 的函数需要非空输入。

有没有更干净的 C# 方法来做到这一点?或者如果我发现自己经常这样做,我是否在做一些架构上不正确的事情?

抱歉,如果这是重复,我似乎找不到合适的搜索词。

我尝试使用新的合并运算符来实现这一点,但这不能用于调用函数。不确定三元运算符是否也可用于实现此目的。

我希望有一条线的方法可以做到这一点。有点像

bar ?? foo(bar) // That is run foo with bar when bar is not null.

您可以在 foo 方法中空检查:

void foo(object bar)
{
    if(bar == null) return;
    //your lines of code
}

然后你可以运行为:

foo(bar);

例如,您可以使用三元运算符,如下所示:

bar != null ? foo(bar) : * ;

*,您将插入要执行的语句,如果bar == null.

如果我发现自己经常这样做,我是否在做一些架构上不正确的事情?

也许。 您通常应该知道变量是否可以为空,并省略检查。 C# 8 引入了一项功能来帮助你声明、验证和强制引用不能为 null:可为空的引用类型。

最新更新