Rumah >pembangunan bahagian belakang >C++ >Bolehkah C# Generik Mengekang Argumen Jenis ke Jenis Integer tertentu?

Bolehkah C# Generik Mengekang Argumen Jenis ke Jenis Integer tertentu?

Susan Sarandon
Susan Sarandonasal
2025-02-01 23:26:10213semak imbas

Can C# Generics Constrain Type Arguments to Specific Integer Types?

c#Kekangan kaedah generik jenis numerik tertentu

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

<code class="language-csharp">static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T>
{
    return value > T.Zero;
}</code>
latar belakang sejarah

<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, C#tidak memberikan kekangan sedemikian. Seperti yang dijelaskan oleh Anders Hejlsberg, sebabnya adalah untuk mengelakkan kerumitan yang tidak perlu, dan faedah sebenar adalah terhad.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn