在具有可空类型的 C# 中,可以实现智能地进行空检查的“TryGet”,例如,
bool TryGetById(int id, [NotNullWhen(returnValue: true)] out MyThing? myThing)
Run Code Online (Sandbox Code Playgroud)
这允许调用者跳过对 out var myThing 的 null 检查。
不幸的是,异步不允许输出参数,并且使用元组返回的模式不允许这种智能的 NotNull 检查(至少,据我所知)。还有其他选择吗?
有没有办法在异步元组返回类型上使用“NotNullWhen”等效项,例如,
Task<(bool Ok, [NotNullWhen(returnValue: true)] MyThing? MyThing)> TryGetById(int id)
Run Code Online (Sandbox Code Playgroud) 我有一个列表,需要定期更新其元素.元素没有列表键:keyreplace.它也将动态增长.这是更新列表中特定索引的元素的好方法吗?有更好的算法吗?
List = [1,2,3,4],
Index = 3,
NewElement = 5,
{HeadList, [_|TailList]} = lists:split(Index-1, List),
[1,2,5,4] = lists:append([HeadList, [NewElement|TailList]]).
Run Code Online (Sandbox Code Playgroud)