Mengatasi Kekangan Operator Terlebih Beban dalam .NET Generics
Dalam .NET, kaedah generik selalunya memerlukan kekangan khusus pada jenis ia beroperasi. Namun, menguatkuasakan kekangan pada jenis yang mempunyai operator terlampau beban boleh terbukti mencabar, kerana antara muka tidak dapat menampung lebihan muatan operator.
Soalan ini menyelidiki pilihan yang tersedia untuk melaksanakan kaedah generik yang menerima jenis dengan operator terlampau beban, khususnya penolakan.
Mengatasi Kekangan
Malangnya, tiada penyelesaian langsung untuk kekangan ini. Operator adalah entiti statik dan tidak boleh dinyatakan dalam kekangan. Selain itu, primitif sedia ada kekurangan pelaksanaan antara muka khusus yang boleh mencontohi tingkah laku ini.
Pendekatan dalam .NET 3.5 dan Di Atas
Walau bagaimanapun, terdapat penyelesaian yang tersedia dalam .NET 3.5 dan versi kemudian:
T result = Operator.Add(first, second); // implicit <T>; here
static T Add<T>(T x, T y) { dynamic dx = x, dy = y; return dx + dy; }
Alternatif: Penyelesaian Berasaskan Antara Muka
Pendekatan lain melibatkan penciptaan antara muka dengan kaedah yang mewakili pengendali yang dikehendaki:
interface ICalc<T> { T Add(T, T)() T Subtract(T, T)() }
Walaupun kaedah ini menghapuskan penggunaan kekangan generik, kaedah ini memperkenalkan keperluan untuk lulus ICalc
Akhirnya, pilihan pendekatan bergantung pada keperluan khusus dan kekangan keserasian projek.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Operator Terlebih Beban dalam Kaedah Generik .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!