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).
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.
IBinaryInteger<Tself>
, jika parameter yang diluluskan adalah positif, kembali benar.
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; }
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!