gpt4 book ai didi

C#泛型类类型参数和与泛型参数相同的约束

转载 作者:行者123 更新时间:2023-12-05 04:32:42 25 4
gpt4 key购买 nike

Stripe payment .NET API 有一个通用的类定义,如下所示,我想了解为什么约束部分 StripeEntity<T>应该是类型 T .

public abstract class StripeEntity<T> : StripeEntity where T : StripeEntity<T>

来自: https://github.com/stripe/stripe-dotnet/blob/master/src/Stripe.net/Entities/_base/StripeEntity.cs

我理解泛型语法,但不明白为什么要这样定义类,背后的思路。这是泛型类的常见模式吗?如果是,有什么好处?

最佳答案

它叫the curiously recurring pattern , 通常用于 C++。

它有几个优点,尤其是它是一种(非常有限的)静态多态形式,因此避免了调用虚函数的成本。然而,由于语言和运行时的构造方式,这在 C++ 中比在 C# 中更有值(value)。

.Net 也有更好的方法来处理这个问题,例如,您可以通过使用属性和源生成器以更清晰的方式实现类似的东西。

关于C#泛型类类型参数和与泛型参数相同的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71605263/

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