Rumah >pembangunan bahagian belakang >C++ >Mengatasi vs baru dalam C#: Bilakah anda harus menggunakan setiap kata kunci untuk mengubah suai kaedah yang diwarisi?

Mengatasi vs baru dalam C#: Bilakah anda harus menggunakan setiap kata kunci untuk mengubah suai kaedah yang diwarisi?

Barbara Streisand
Barbara Streisandasal
2025-01-28 12:11:111025semak imbas

Override vs. New in C#: When Should You Use Each Keyword to Modify Inherited Methods?

Memahami kata kunci dan kata kunci baru dalam C#: Bilakah menggunakannya untuk mengubah suai kaedah warisan?

Dalam pengaturcaraan yang berorientasikan objek, kaedah asas dalam kelas warisan sangat penting. Kata kunci "Mengatasi" dan "Baru" mempunyai kegunaan yang berbeza dalam konteks ini:

<.> 1. Mengatasi kata kunci

"Mengatasi" pengubahsuaian digunakan untuk menulis semula kaedah maya atau kaedah abstrak secara eksplisit dalam kelas asas. Apabila kaedah penulisan semula, ia menyediakan pelaksanaan baru, sambil mengekalkan tandatangan kaedah asal. Setiap kali anda memanggil kaedah ini, walaupun anda merujuk kepada kelas asas, kaedah penulisan semula akan dilakukan. <.> 2. Kata kunci baru

pengubah suai "baru" mewakili kaedah pelaksanaan yang berbeza. Kaedah "baru" akan melindungi kaedah asas, yang bermaksud bahawa mana -mana pengekodan kelas asas akan melaksanakan pelaksanaan asal, dan kod yang memetik kelas warisan akan melaksanakan kaedah "baru".

Contoh:

Pertimbangkan serpihan kod berikut:

Dalam contoh ini, kelas "Derived" menulis semula kaedah "DOIT". Sebarang rujukan kepada "Base.doit" akan melaksanakan kaedah "DOIT" dalam kelas "Derived".

Dalam kes ini, "DOIT" dalam kelas "Derived" dianggap sebagai kaedah baru. Rujukan kepada "Base.doit" akan melaksanakan pelaksanaan asal kelas "asas", dan rujukan kepada "Derived.doit" akan melaksanakan pelaksanaan baru dalam kelas "diperolehi".

Penggunaan yang disyorkan:
<code class="language-C#">public class Base
{
    public virtual void DoIt() { }
}

public class Derived : Base
{
    public override void DoIt() { }
}</code>

Apabila menulis semula kaedah, disyorkan untuk menggunakan "mengatasi" kerana ia mengekalkan tanda tangan kaedah dan membolehkan polimorfisme. Sebaliknya, "baru" digunakan untuk membuat kaedah yang berbeza dari kaedah asas, yang boleh memusnahkan hubungan warisan.
<code class="language-C#">public class Base
{
    public virtual void DoIt() { }
}

public class Derived : Base
{
    public new void DoIt() { }
}</code>

Atas ialah kandungan terperinci Mengatasi vs baru dalam C#: Bilakah anda harus menggunakan setiap kata kunci untuk mengubah suai kaedah yang diwarisi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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