Rumah >pembangunan bahagian belakang >C++ >Pendawaian EventHandler dalam C#: Inferens Perwakilan lwn. Penggunaan Perwakilan Eksplisit?
Sambungan pengendali acara C#: mewakilkan inferens dan penggunaan perwakilan yang jelas
Acara dalam C# membenarkan gandingan longgar antara objek dan menyediakan mekanisme untuk mengendalikan acara luaran. Senario biasa melibatkan melanggan acara secara dinamik daripada objek luaran, yang mana anda akan menghadapi variasi sintaks berikut:
<code class="language-c#">[object].[event] += anEvent;</code>
atau
<code class="language-c#">[object].[event] += new EventHandler(anEvent);</code>
Kedua-dua kaedah kelihatan serupa, tetapi pemahaman yang lebih mendalam mendedahkan perbezaan halus mereka.
Dalam varian pertama, pengkompil melakukan inferens perwakilan untuk menentukan secara automatik jenis perwakilan yang sesuai berdasarkan tandatangan fungsi yang disediakan. Sintaks yang dipermudahkan ini meminimumkan lebihan kod.
Dalam varian kedua, anda menyatakan secara eksplisit new
perwakilan menggunakan kata kunci EventHandler
. Pendekatan ini merupakan satu-satunya pilihan untuk projek C# 1.0, tetapi dalam C# 2.0 dan lebih baru, inferens perwakilan menjadi pendekatan pilihan.
Bila menggunakan inferens perwakilan
Untuk projek C# 2.0 dan lebih tinggi, inferens perwakilan adalah disyorkan. Ia ringkas dan meningkatkan kebolehbacaan kod.
Contoh:
<code class="language-c#">private void Button1_Click(object sender, EventArgs e) { // 事件处理逻辑 } private void Form1_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; }</code>
Dalam contoh ini, inferens wakilkan secara automatik menentukan perwakilan Button1
yang betul untuk acara klik EventHandler
.
Penggunaan perwakilan eksplisit
Walaupun inferens perwakilan adalah perkara biasa, apabila berurusan dengan kod warisan atau melaksanakan pengoptimuman prestasi, kadangkala mungkin perlu untuk menentukan perwakilan secara eksplisit. Walau bagaimanapun, penggunaan perwakilan yang eksplisit sering menambahkan keterkataan yang tidak perlu dan harus digunakan hanya apabila perlu.
Atas ialah kandungan terperinci Pendawaian EventHandler dalam C#: Inferens Perwakilan lwn. Penggunaan Perwakilan Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!