Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya dapat mengekang jenis generik dalam .net hanya menerima jenis angka?
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:
<code class="language-csharp">static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T> { return value > T.Zero; }</code>
Pra -.net 7 Pendekatan
<code class="language-csharp">Console.WriteLine(IntegerFunction(5)); // True Console.WriteLine(IntegerFunction((sbyte)-5)); // False Console.WriteLine(IntegerFunction((ulong)5)); // True</code>
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!