Rumah > pembangunan bahagian belakang > C++ > Mengatasi vs Shadowing di C#: Bilakah anda harus menggunakan setiap teknik?

Mengatasi vs Shadowing di C#: Bilakah anda harus menggunakan setiap teknik?

Linda Hamilton
Lepaskan: 2025-01-28 13:56:09
asal
895 orang telah melayarinya

Overriding vs. Shadowing in C#: When Should You Use Each Technique?

Kaedah dalam kaedah dalam C#menulis semula dan menyembunyikan

Dari segi warisan, C# menyediakan dua teknologi yang berbeza untuk mentakrifkan semula kaedah dalam kelas asas: menulis semula dan bersembunyi. Kedua -dua teknologi ini mempunyai perbezaan asas dari segi kaedah kerja dan pengaruh pada rantaian warisan.

tersembunyi

Tersembunyi membolehkan anda membuat kaedah baru dengan nama yang sama dengan kaedah asas Cina, tetapi kata kunci tidak digunakan. Kaedah ini telah menjadi ahli tempatan kelas yang diperoleh, menyembunyikan kaedah asas. Apabila contoh yang diperolehi memanggil kaedah tersembunyi, ia akan secara langsung melaksanakan pelaksanaan kelas ini, tanpa mengira struktur tahap warisan.

Contoh: override

Dalam contoh ini, kaedah tersembunyi di dalam kelas

, dan kaedah
<code class="language-csharp">class A
{
   public int Foo(){ return 5;}
   public virtual int Bar(){return 5;}
}
class B : A
{
   public new int Foo() { return 1;}     //隐藏
   public override int Bar() {return 1;} //重写
}</code>
Salin selepas log masuk
ditulis semula. Apabila

( instance) panggilan Foo, ia kembali B kerana Bar dalam clB secara langsung. B Foo menulis semula 1 B Foo Sebaliknya, penulisan semula memerlukan

kata kunci. Ia membolehkan anda menentukan pelaksanaan baru kaedah maya di kelas asas. Apabila contoh yang diperolehi memanggil kaedah penulisan semula, ia akan dilaksanakan di kelas yang diperolehi mengikut rantaian warisan.

Contoh:

Dalam contoh terdahulu, kaedah override

ditulis semula. Apabila panggilan , ia kembali

, kerana dalam adalah menulis semula.

Perbezaan antara tersembunyi dan penulisan semula B Bar clB pilihan antara tersembunyi dan menulis semula bergantung kepada keperluan khusus anda: Bar 1 B Tersembunyi: Bar Apabila anda ingin menyembunyikan kaedah warisan kelas asas dan gunakan pelaksanaan tempatan, gunakan tersembunyi.

Reworching: Apabila anda ingin mentakrifkan semula kaedah warisan dan laksanakan pelaksanaan kelas yang diperolehi, gunakan penulisan semula.

Atas ialah kandungan terperinci Mengatasi vs Shadowing di C#: Bilakah anda harus menggunakan setiap teknik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan