返回 a。 否则(a 为null)=> 返回b。 我想模拟类似它的逆的东西(据我所知,没有运算符可以做到这一点): 如果 a 为 null => 返回 a-6ren">
gpt4 book ai didi

c# - 模拟运算符如 "inverse of ??"

转载 作者:行者123 更新时间:2023-12-02 22:19:59 27 4
gpt4 key购买 nike

一个?? b

  • 如果 a 不是 null => 返回 a
  • 否则(anull)=> 返回b

我想模拟类似它的逆的东西(据我所知,没有运算符可以做到这一点):

  • 如果 anull => 返回 a
  • 否则(a 不是null)=> 返回b

想法是 b 将是接收 a 并且需要避免 null 参数的函数的结果。像这样:a XX fn(a) 其中 XX 将是运算符(如果存在)。

我仅有的两个变体是:

  • a == null ? a : fn(a)
  • a == null ?空:fn(a)

有什么办法可以简化这段代码吗?

最佳答案

不确定您要完成什么?是这样的吗?

TResult NullFn<TParam, TResult>(TParam a, Func<TParam, TResult> method)
{
if(a == null) return null;
return method(a);
}

...

var result = NullFn(a, a => fn(a))

但恕我直言,最好的解决方案是让 fn 在传递 null 值时返回 null。

编辑:

顶部的方法只是一个例子。在特定区域一遍又一遍地进行大量相同操作并且您无法更改 fn 的情况下,您可能想使用类似的东西,因为它会更容易专注于其余部分代码,并且您可能希望在将来一次更改所有操作的空值处理行为。 (我假设是这种情况,因为您首先要问。)但我不会在整个应用程序中使用它,因为如果您没有 NullFn 则不清楚会发生什么 功能就在您面前。

关于c# - 模拟运算符如 "inverse of ??",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13868046/

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