C# 用于根据条件调用函数的更简洁语法
我发现自己经常做下面的片段C# 用于根据条件调用函数的更简洁语法,c#,function,syntax,parameters,conditional,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的函数需要一个非空的输入 有没有更干净的办法?或者,如果我发现自己经常这样做,我是否在做一些架构上不正确的事情 抱歉如果这是重复,我似乎找不到合适的搜索词 我曾尝试使用新的合并操作符来实现这一点,但它
if(bar != null)
foo(bar) // That is, pass in object 'bar' to function 'foo' if bar is not null
编辑:foo函数来自一个API,我无权访问它的代码。本质上,API的函数需要一个非空的输入
有没有更干净的办法?或者,如果我发现自己经常这样做,我是否在做一些架构上不正确的事情
抱歉如果这是重复,我似乎找不到合适的搜索词
我曾尝试使用新的合并操作符来实现这一点,但它不能用于调用函数。不确定是否可以使用三元运算符来实现这一点
我希望有一个单行的方式来做这件事。有点像
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
,则插入要执行的语句
如果我发现自己经常这样做,我是否在做架构上不正确的事情
也许吧。您通常应该知道您的变量是否可以为null,并省略检查。C#8引入了一项功能,帮助您声明、验证和强制引用不能为空:.关于“if/else”语句的“不干净”是什么?!?有一种更简洁的方法,可以尝试使用聚合函数,如集合的
TrueForAll(array,predicate)
,或者尝试LINQ。我想我应该说清楚。foo函数来自我无权访问的API。本质上,API的函数需要一个非空的输入。编辑我的帖子。。。谢谢你只需要使用if语句我想如果当bar==null时我没有任何要执行的东西,我可以只执行``bar!=无效的foo(bar):返回;`我想这是一种方法。谢谢@KishoreVenkateshan您可以像下面这样打开它无效的傅(大律师):代码>或者,如果你想立即返回,请使用示例中的return关键字。啊,这实际上更好!谢谢你给我指这个。我将确保进一步了解新的C#8功能。