menyekat .net generik ke jenis angka
.NET Generik menyediakan fleksibiliti jenis, tetapi sering memerlukan kekangan jenis. Keperluan yang kerap adalah untuk mengehadkan hujah jenis generik kepada jenis angka seperti, Int16
, Int32
, Int64
, UInt16
, dan UInt32
. UInt64
Penyelesaian dengan .net 7
manakala versi terdahulu tidak mempunyai penyelesaian langsung, .net 7 memperkenalkan (dalam INumber<T>
) sebagai antara muka yang paling komprehensif untuk semua jenis angka. Untuk jenis integer khusus, System.Numerics
boleh didapati. IBinaryInteger<T>
Contoh kod CODE: Fungsi Integer
Contoh ini menunjukkan menggunakan
:
IntegerFunction
IBinaryInteger<T>
Penggunaan:
static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T> { return value > T.Zero; }
Pra -.net 7 Pendekatan
Console.WriteLine(IntegerFunction(5)); // True Console.WriteLine(IntegerFunction((sbyte)-5)); // False Console.WriteLine(IntegerFunction((ulong)5)); // True
sebelum .net 7, mencapai kekangan ini lebih mencabar. Kaedah seperti menggunakan corak kilang dengan kelas telah dicadangkan, tetapi ini menghasilkan kod yang kurang elegan dan kurang extensible.
Atas ialah kandungan terperinci Bagaimanakah saya dapat mengekang jenis generik dalam .net hanya menerima jenis angka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!