gpt4 book ai didi

c# - 通用函数和值类型

转载 作者:行者123 更新时间:2023-11-30 22:03:07 25 4
gpt4 key购买 nike

泛型函数是否适用于可为 null 的值类型,还是它们在幕后隐藏?

例如我有一个这样的辅助函数:

public static TResult Return<TInput, TResult>(this TInput o, Func<TInput, TResult> evaluator, TResult failureValue)
where TInput : class
{
if (o == null) return failureValue;
return evaluator(o);
}

当某些东西为空时,我用它来提供后备值,例如

var log = person.Return(p => p.log, emptylog)

因此,根据 log 是值类型还是引用类型,我是否需要专门版本的 Return() 来处理不装箱的值类型,或者是上面的适用于所有情况?

编辑:我很好奇为什么这个 http://pastebin.com/vdS1uNu1 的作者具有类 -> 结构、类 -> 类等的特化。

最佳答案

不,这不会装箱值类型 - 但它导致每次您为 TResult 使用不同的值类型时(在 JIT 时间)创建该方法的新本地实现,而所有引用类型将共享相同的 native 代码。不过,这非常很少成为问题 - 这不像是每次调用的开销。正是“根据类型参数创建正确的 native 代码”使其能够避免装箱。

关于c# - 通用函数和值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26282251/

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