Apabila menggunakan generik dalam C#, adakah terdapat kekangan yang boleh mengehadkan parameter jenis t untuk hanya jenis nilai berikut: INT16, INT32, INT64, UINT16, UINT32, dan UINT64?
jawab
dalam .net 7, antara muka yang digunakan khusus untuk mengehadkan t ke jenis berangka:
di ruang nama. Untuk menerima hanya jenis integer, anda boleh menggunakan. System.Numerics
INumber<T>
Memandangkan pelaksanaan kaedah berikut: IBinaryInteger<T>
cara menggunakan contoh: IntegerFunction
static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T> { return value > T.Zero; }
Console.WriteLine(IntegerFunction(5)); // True Console.WriteLine(IntegerFunction((sbyte)-5)); // False Console.WriteLine(IntegerFunction((ulong)5)); // True
Untuk adegan yang tidak tersedia secara langsung untuk menyokong kekangan, adalah disyorkan untuk menggunakan kaedah alternatif, seperti model kilang atau strategi.
Atas ialah kandungan terperinci Bolehkah C# Generik Mengekang Argumen Jenis ke Jenis Integer tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!