Semasa memfaktorkan semula kod, tandatangan kaedah yang luar biasa muncul:
private static new MyObject CreateSomething() { return new MyObject{"Something New"}; }
Soalan: Apakah kepentingan kata kunci baharu dalam tandatangan kaedah ini? Adakah ia satu ciri yang diperkenalkan dalam C# 3.0? Bagaimanakah ia berbeza daripada penggantian?
Jawapan:
Kata kunci baharu dalam tandatangan kaedah mempunyai tujuan yang berbeza daripada penggantian. Menurut dokumentasi MSDN Microsoft, ia membenarkan untuk menyembunyikan ahli yang diwarisi.
Contoh yang menggambarkan perbezaan:
public class A { public virtual void One(); public void Two(); } public class B : A { public override void One(); public new void Two(); } B b = new B(); A a = b as A; a.One(); // Calls implementation in B a.Two(); // Calls implementation in A b.One(); // Calls implementation in B b.Two(); // Calls implementation in B
Dalam contoh ini, override digunakan pada kaedah One untuk mengatasi pelaksanaannya dalam kelas asas A. Sebaliknya, baru digunakan pada kaedah Dua untuk menyembunyikan pelaksanaan yang diwarisi daripada A.
Perbezaan Utama:
override mengubah suai kaedah maya atau abstrak untuk menyediakan pelaksanaan berbeza dalam kelas terbitan. Sebaliknya, ahli warisi baharu menyembunyikan, baik maya dan bukan maya, membenarkan pelaksanaan baharu disediakan dalam kelas terbitan.
Atas ialah kandungan terperinci Apakah Maksud Kata Kunci `baru` dalam Tandatangan Kaedah C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!