Keterbatasan Polimorfisme dalam Parameter 'ref' dan 'out'
Polymorphism, konsep asas dalam pengaturcaraan berorientasikan objek, membenarkan objek yang berbeza-beza jenis untuk dianggap sebagai objek superjenis biasa. Walau bagaimanapun, apabila menyentuh parameter 'ref' dan 'out', polimorfisme tidak disokong.
Untuk memahami sebabnya, pertimbangkan kod berikut:
class A {} class B : A {} class C { C() { var b = new B(); Foo(b); Foo2(ref b); // Compile-time error: "The 'ref' argument doesn't match the parameter type" } void Foo(A a) {} void Foo2(ref A a) {} }
Kod ini tidak dikompilasi apabila 'Foo2' digunakan dengan merujuk kepada 'B' kerana parameter 'ref' dan 'out' tidak boleh menyokong polimorfisme.
Mari kita terokai sebab di sebalik pengehadan ini:
Kesimpulannya, walaupun polimorfisme ialah ciri berkuasa pengaturcaraan berorientasikan objek, ia tidak disokong untuk parameter 'ref' dan 'out' kerana pertimbangan pengkapsulan, keselamatan jenis dan prestasi .
Atas ialah kandungan terperinci Mengapa Polimorfisme Tidak Berfungsi dengan Parameter `ref` dan `out` dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!