gpt4 book ai didi

c# - 可空值元组问题

转载 作者:行者123 更新时间:2023-11-30 15:58:42 28 4
gpt4 key购买 nike

<分区>

我正在尝试更新我的代码以使用新的值元组,总的来说它使它更具可读性,所以我喜欢它。

但是,我在使用可空值时遇到了问题。特别是我有两个集合条目必须是 null或返回 null 的函数特定条件下的值。例如:

internal static TValue SafeTryGet<TKey, TValue>(this IDictionary<TKey, TValue> list, TKey key) =>
list.TryGetValue(key, out TValue ret) ? ret : default(TValue);

这适用于正常的 Tuple<>对象,因为它们是类,但值类型永远不会返回 null这打破了这个。

我试过类似下面的方法,但重载分辨率并不能解决这种情况,它只会给出编译错误:

internal static TValue SafeTryGet<TKey, TValue>(this IDictionary<TKey, TValue> list, TKey key) where TValue : class =>
list.TryGetValue(key, out TValue ret) ? ret : default(TValue);

internal static TValue? SafeTryGet<TKey, TValue>(this IDictionary<TKey, TValue> list, TKey key) where TValue : struct =>
list.TryGetValue(key, out TValue ret) ? ret : new TValue?();

如果没有提供执行此操作的新方法,是否有一种干净的方式来编写它以在 TValue 时返回可空类型是 struct ?我强调“干净”这个词,因为我显然可以围绕它进行编码,但我想要一个语义解决方案而不是蛮力方法。

请记住 FirstOrDefault() 也会发生同样的问题林克方法。它不会返回 null ,这使得它在这种情况下相当无用。如果可能的话,我也想要一个解决这个问题的解决方案。

编辑:请牢记 Linq 问题。 这不是另一篇文章的重复,因为他们的要求更灵活。如果可能的话,我想让 Linq 像往常一样处理值元组。

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