Rumah >pembangunan bahagian belakang >C++ >Pendawaian EventHandler dalam C#: Inferens Perwakilan lwn. Penggunaan Perwakilan Eksplisit?

Pendawaian EventHandler dalam C#: Inferens Perwakilan lwn. Penggunaan Perwakilan Eksplisit?

DDD
DDDasal
2025-01-08 07:17:45910semak imbas

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.

EventHandler Wiring in C#: Delegate Inference vs. Explicit Delegate Usage?

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!

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