Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya dapat mengekang jenis generik dalam .net hanya menerima jenis angka?

Bagaimanakah saya dapat mengekang jenis generik dalam .net hanya menerima jenis angka?

Patricia Arquette
Lepaskan: 2025-02-01 23:36:13
asal
1032 orang telah melayarinya

How Can I Constrain Generic Types in .NET to Only Accept Numeric Types?

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;
}
Salin selepas log masuk

Pra -.net 7 Pendekatan
Console.WriteLine(IntegerFunction(5));         // True
Console.WriteLine(IntegerFunction((sbyte)-5)); // False
Console.WriteLine(IntegerFunction((ulong)5));  // True
Salin selepas log masuk

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!

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