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

时间:2019-03-23 23:03:23

标签: c# function syntax parameters conditional

我发现自己经常做以下几段代码

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

编辑:foo函数来自一个API,但我无法访问它的代码。本质上,API的函数期望输入为非null。

有没有更清洁的C#方法来做到这一点?还是我发现自己经常做一些在架构上不正确的事情?

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

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

我希望有一种方法可以做到这一点。有点像

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

3 个答案:

答案 0 :(得分:1)

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

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

然后您可以运行为:

foo(bar);

答案 1 :(得分:0)

例如,您可以使用如下所示的Ternary operator

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

*的{​​{1}}处插入要执行的语句。

答案 2 :(得分:0)

  

如果我发现自己经常这样做,我在结构上做错了吗?

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