我发现自己做了很多以下的代码片段
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方法中检查null:
void foo(object bar)
{
if(bar == null) return;
//your lines of code
}
然后你可以运行:
foo(bar);
如果我发现自己做了很多这样的事情,我在建筑上做错了吗?
也许。您通常应该知道您的变量是否可以为null,并省略检查。 C#8引入了一个功能来帮助您声明,验证和强制引用不能为null:Nullable Reference Types。