我发现自己经常做以下类型的片段
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:可为空的引用类型。