首頁 > 後端開發 > C++ > 如何將通用方法參數限制為C#中的數字類型?

如何將通用方法參數限制為C#中的數字類型?

DDD
發布: 2025-02-01 23:16:09
原創
890 人瀏覽過

How Can I Restrict Generic Method Arguments to Numeric Types in C#?

C#泛型方法數值類型限制

C#中的泛型方法是跨不同類型抽象複雜操作的強大工具。然而,傳統的where關鍵字只允許基於接口或繼承的約束。當您希望將參數限制為特定類型(例如數值基元類型)時,此限制可能會成為問題。

.NET 7 中引入 IBinaryInteger

隨著.NET 7的出現,出現了一種解決此問題的方案:System.Numerics命名空間中的IBinaryInteger<Tself>接口。此接口包含所有整數類型,使您可以將泛型方法約束為Int16、Int32、Int64、UInt16、UInt32和UInt64。

使用 IBinaryInteger 實現 IntegerFunction

例如,考慮以下IntegerFunction,如果傳遞的參數是正整數,則返回True。

static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T>
{
    return value > T.Zero;
}
登入後複製

示例用法

使用新的IntegerFunction,我們可以輕鬆檢查不同整數類型的正負性:

Console.WriteLine(IntegerFunction(5));         // True
Console.WriteLine(IntegerFunction((sbyte)-5)); // False
Console.WriteLine(IntegerFunction((ulong)5));  // True
登入後複製

歷史回顧

在引入IBinaryInteger<Tself>之前,C#缺乏對將泛型方法參數限制為特定數值類型的顯式支持。相反,程序員求助於變通方法,例如工廠模式或策略類。但是,這些方法需要用戶編寫額外的代碼並增加複雜性。

以上是如何將通用方法參數限制為C#中的數字類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板