Rumah >pembangunan bahagian belakang >C++ >Apakah yang dilakukan oleh Kata Kunci `baru` dalam Tandatangan Kaedah C#?

Apakah yang dilakukan oleh Kata Kunci `baru` dalam Tandatangan Kaedah C#?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-02 18:54:38723semak imbas

What Does the `new` Keyword Do in C# Method Signatures?

Memahami Kata Kunci "baharu" dalam Tandatangan Kaedah

Semasa pemfaktoran semula kod, pembangun tersilap memperkenalkan kata kunci baharu ke dalam tandatangan kaedah:

private static new MyObject CreateSomething()
{
  return new MyObject{"Something New"};
}

Ini disusun secara sah dalam C#, menimbulkan persoalan tentang kepentingan kata kunci baharu dalam tandatangan kaedah.

Apakah yang dimaksudkan oleh kata kunci "baharu"?

Seperti yang dinyatakan dalam dokumentasi MSDN, kata kunci baharu dalam tandatangan kaedah mengubah suai tingkah laku rujukannya:

  1. Menyembunyikan kaedah yang diwarisi: Apabila digunakan dalam kelas terbitan, kata kunci baharu menghalang pelaksanaan kaedah yang diwarisi daripada digunakan semula. Sebaliknya, kaedah dalam kelas terbitan dianggap sebagai kaedah baharu sepenuhnya.
  2. Mengatasi kaedah bukan maya dan statik: Tidak seperti kata kunci ganti, yang hanya boleh mengatasi kaedah maya, kaedah baharu kata kunci membenarkan mengatasi kaedah bukan maya dan juga statik dalam pangkalan kelas.

Contoh:

Pertimbangkan kod berikut:

public class A
{
   public virtual void One();
   public static void Two();
}

public class B : A
{
   public new void One();
   public override 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, kelas B mentakrifkan semula kedua-dua One kaedah (menggunakan baru) dan kaedah Dua (menggunakan override). Dengan menggunakan baharu untuk One, kelas B menyembunyikan pelaksanaan yang diwarisi dan memperkenalkannya sendiri. Walau bagaimanapun, dengan menggunakan override untuk Dua, ia mengatasi kaedah maya yang diwarisi.

Oleh itu, kata kunci baharu memberikan kefleksibelan dengan membenarkan kaedah yang diwarisi ditindih atau disembunyikan dalam kes di mana penggantian tidak berkenaan, seperti untuk bukan- kaedah maya dan statik.

Atas ialah kandungan terperinci Apakah yang dilakukan oleh Kata Kunci `baru` dalam Tandatangan Kaedah C#?. 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