Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh menyekat hujah kaedah generik kepada jenis angka di C#?

Bagaimanakah saya boleh menyekat hujah kaedah generik kepada jenis angka di C#?

DDD
Lepaskan: 2025-02-01 23:16:09
asal
917 orang telah melayarinya

How Can I Restrict Generic Method Arguments to Numeric Types in C#?

c#Kaedah generik Jenis Numerik Had

Kaedah generik dalam C#adalah alat yang berkuasa untuk operasi abstrak dan kompleks dalam pelbagai jenis. Walau bagaimanapun, kata kunci tradisional hanya membenarkan antara muka atau kekangan warisan. Had ini mungkin menjadi masalah apabila anda ingin mengehadkan parameter ke jenis tertentu (seperti jenis elemen asas berangka).

.NET 7 Memperkenalkan IBinaryInteger

where

Dengan kemunculan .NET 7, penyelesaian kepada masalah ini muncul: System.Numerics bernama antara muka dalam ruang nama. Antara muka ini mengandungi semua jenis integer yang membolehkan anda menghalang kaedah generik sebagai INT16, INT32, INT64, UINT16, UINT32, dan UINT64. Menggunakan IBinaryInteger

Melaksanakan IntegerFunction

IBinaryInteger<Tself>

Sebagai contoh, memandangkan berikut

, jika parameter yang diluluskan adalah positif, kembali benar. Penggunaan contoh

IntegerFunction Menggunakan baru, kita dapat dengan mudah menyemak sifat positif dan negatif dari jenis integer yang berbeza:

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

Kajian Sejarah

Sebelum pengenalan , C#tidak mempunyai sokongan yang jelas untuk mengehadkan parameter genetik sebagai jenis berangka tertentu. Sebaliknya, pengaturcara boleh membantu mengubah kaedah, seperti model kilang atau strategi. Walau bagaimanapun, kaedah ini memerlukan pengguna untuk menulis kod tambahan dan meningkatkan kerumitan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menyekat hujah kaedah generik kepada jenis angka di C#?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan