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
Lepaskan: 2025-02-01 23:26:10
asal
188 orang telah melayarinya

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

static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T>
{
    return value > T.Zero;
}
Salin selepas log masuk
<史> latar belakang sejarah

Console.WriteLine(IntegerFunction(5));         // True
Console.WriteLine(IntegerFunction((sbyte)-5)); // False
Console.WriteLine(IntegerFunction((ulong)5));  // True
Salin selepas log masuk
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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan