Penggunaan kata kunci maya dan baharu dalam C#
Dalam pengaturcaraan berorientasikan objek, kaedah biasanya ditakrifkan dalam kelas asas dan ditindih atau ditakrifkan semula dalam kelas terbitan. Walaupun kata kunci "maya" dan "baharu" boleh digunakan untuk mengubah suai pengisytiharan kaedah, kata kunci tersebut dilaksanakan dengan cara yang berbeza.
tulis semula maya
kata kunci baharu
Contoh
Pertimbangkan kod berikut:
public class Base { public virtual bool DoSomething() { return false; } } public class Derived : Base { public override bool DoSomething() { return true; } }
Jika kita mencipta contoh Derived dan menyimpannya dalam pembolehubah jenis Base, panggilan ke DoSomething() akan memanggil kaedah yang diganti dalam Derived:
Base a = new Derived(); a.DoSomething(); // 返回 true
Sebaliknya, jika kita menggunakan kata kunci baharu dalam Derived, panggilan ke DoSomething() akan menggunakan kaedah baharu dalam Derived, walaupun pembolehubah adalah jenis Base:
public class Derived : Base { public new bool DoSomething() { return true; } }
Base a = new Derived(); a.DoSomething(); // 返回 true (Derived 中的新方法)
Bila hendak menggunakan penggantian maya berbanding baharu
Atas ialah kandungan terperinci Maya vs baru dalam C#: Bilakah untuk mengatasi atau menyembunyikan kaedah kelas asas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!