gpt4 book ai didi

c# - a = (x == null) 的最佳语法?空 : x. 函数()

转载 作者:IT王子 更新时间:2023-10-29 03:45:57 30 4
gpt4 key购买 nike

这里的基本问题 - 我有很多行代码看起来像这样:

var a = (long_expression == null) ? null : long_expression.Method();

类似的行在这个函数中重复了很多。 long_expression 每次都不一样。我试图找到一种避免重复long_expression 的方法,但要保持这种紧凑。类似于 operator ?? 的反义词。目前,我正在考虑放弃并将其放在多行中,例如:

var temp = long_expression;
var a = (temp == null) ? null : temp.Method();

但我很好奇是否有一些我不知道的巧妙语法可以使它更简洁。

最佳答案

好吧,您可以使用这样的扩展方法:

public static TResult NullOr<TSource, TResult>(this TSource source,
Func<TSource, TResult> func) where TSource : class where TResult : class
{
return source == null ? null : func(source);
}

然后:

var a = some_long_expression.NullOr(x => x.Method());

或者(取决于您的 C# 版本)

var a = some_long_expression.NullOr(Foo.Method);

其中 Foosome_long_expression 的类型。

不过我认为我不会这样做。我只使用两行版本。它更简单、更不聪明——虽然“聪明”对于 Stack Overflow 来说很有趣,但对于实际代码来说通常不是一个好主意。

关于c# - a = (x == null) 的最佳语法?空 : x. 函数(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11267554/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com