用于在条件上调用函数的更清晰的语法

问题描述 投票:-1回答:3

我发现自己做了很多以下的代码片段

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.
c# function syntax parameters conditional
3个回答
1
投票

你可以在foo方法中检查null:

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

然后你可以运行:

foo(bar);

0
投票

您可以使用Ternary operator,例如:

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

*你可以插入你想要执行的语句,如果bar == null


0
投票

如果我发现自己做了很多这样的事情,我在建筑上做错了吗?

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

© www.soinside.com 2019 - 2024. All rights reserved.