C#Kekangan kaedah generik hanya boleh dihadkan kepada jenis berangka?
Pengenalan
membebaskan membolehkan pengaturcara menentukan jenis yang boleh beroperasi pada pelbagai jenis data. Walau bagaimanapun, kadang -kadang mungkin perlu untuk mengehadkan jenis jenis generik. Soalan ini menerangkan sama ada terdapat kaedah yang boleh mengehadkan parameter generik hanya untuk jenis nilai tertentu. kekangan had jenis generik
C#
Kata kunci membolehkan pemaju menentukan kekangan parameter generik. Kekangan ini boleh digunakan untuk memastikan bahawa parameter jenis melaksanakan antara muka tertentu atau mewarisi kelas asas tertentu. antara muka berangka yang sedia ada
where
Malangnya, C# tidak menyediakan antara muka yang mengkhususkan diri dalam jenis INT16, INT32, INT64, UINT16, UINT32, dan UINT64. Oleh itu, kata kunci tidak boleh digunakan secara langsung untuk mengehadkan parameter generik ke dalam jenis khusus ini.
kaedah alternatif
Sebagai alternatif, sila pertimbangkan kaedah berikut:
where
Antara muka : Net 7 memperkenalkan antara muka di ruang nama
. Antara muka ini menunjukkan bahawa semua jenis integer binari boleh digunakan untuk mengehadkan parameter jenis ke jenis integer.Mod Kilang
IBinaryInteger
Kelas Strategik : Pilihan lain adalah menggunakan pelaksanaan antara muka awam dan menyediakan kelas strategik yang menyediakan pelaksanaan khusus. Strategi ini boleh diserahkan kepada matriks untuk membolehkan sokongan untuk jenis berangka yang berbeza. System.Numerics
IBinaryInteger<T>
Calculator<T>
antara muka, mod kilang dan kaedah alternatif strategi untuk mencapai fungsi yang diperlukan. Atas ialah kandungan terperinci Bolehkah kekangan kaedah C# Generik menyekat hujah jenis ke jenis angka tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!