Stripe payment .NET API 有一個通用類定義,如下所示,我想了解為什么約束部分StripeEntity<T>應該是 type 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
我了解通用語法,但不明白為什么要以這種方式定義類,其背后的思想。這是圍繞泛型類的常見模式嗎?如果是,有什么好處?
uj5u.com熱心網友回復:
它被稱為奇怪的重復模式,通常用于 C 。
它有很多優點,尤其是它是一種(非常有限的)靜態多型形式,因此避免了呼叫虛函式的成本。然而,由于語言和運行時的構造方式,這在 C 中比在 C# 中更有價值。
.Net 也有更好的方法來處理這個問題,例如,您可以通過使用屬性和源生成器以更簡潔的方式實作類似的目標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/449167.html
