在 C# 中使用物件傳送器
本文將討論什麼是物件傳送者以及如何在 C# 中使用它。
C#
中的物件傳送器概述
在開發 C# 應用程式和處理事件時,引數之一是 C# 物件傳送方。它是一個引數,用於建立對事件引發的物件的引用,用於指示處理程式對映正確的物件。
藉助 EventArgs
類,我們可以提供方法的引數;但是,在靜態引數或事件的情況下,該值將變為空。為了在應用程式中使用者需要的任何地方使用這些類,EventArgs
類及其函式 Object() { [native code] }
用於建立物件。
這些類取自預設框架。
C#
中物件傳送器的使用
當我們希望使用特定類的方法、關鍵字和變數來為該類生成物件時,可以這樣做,因為物件是 C# 中應用程式的根類和父類。
using System;
using System.Web;
Access modifiers class name {
Access modifiers return type function_name(object referencename(sender),
EventArgs referencename) {
// some C# code logic depends upon the user requirement
}
}
上面提到的程式碼提供了從一個位置到另一個位置使用和訪問類物件的基本語法。處理程式和 EventArgs
將處理生成的物件。
傳送者是 C# 語言中泛型物件的引數之一,也用於構建物件的例項。適當的應用程式事件會觸發此事件。
處理事件和構造物件的機制稱為事件處理程式,用於處理該事件。無論我們使用靜態事件,引數值始終為空;但是,當我們使用靜態或動態關鍵字時,值會有所不同。
連線到事件的方法稱為事件處理程式。事件處理程式中包含的程式碼在引發事件時執行。
每個事件處理程式提供兩個引數,以便你可以正確處理事件。事件處理程式是執行依賴於客戶端請求的物件的主要方式之一;然後響應將在應用程式中發生的特定事件被觸發。
傳送方是可用於啟動事件的主要控制元件之一,因為它會導致事件因物件傳送方引用而被觸發和完成。
UI 事件之一是按鈕,主要用於使用者活動和後端任務。每當我們點選傳送者按鈕時,客戶端的資料將從前端和後端進行評估,觸發事件並根據使用者的要求執行活動。
簡而言之,你可以說引發事件的專案稱為傳送者。EventArgs
中包含有關該事件的其他詳細資訊。
using System;
public class exmp {
public event EventHandler evnts {
add {
Console.WriteLine("Welcome Example Started");
}
remove {
Console.WriteLine("provide inputs");
}
}
}
public class examp {
public void demo() {
exmp emp = new exmp();
emp.evnts += third;
emp.evnts -= third;
}
public void third(object snd, EventArgs er) {}
public static void Main(string[] args) {
examp examp = new examp();
examp.demo();
Console.ReadKey();
Console.WriteLine("Your events are started and executed successfully");
}
}
第一個引數 snd
提供對引發事件的物件的引用。在上面的例子中,第二個引數,用字母 er
表示,傳輸一個對被處理事件唯一的物件。
要從記憶體中新增和刪除資料,我們使用事件處理程式類的預設關鍵字 add remove。每個類例項及其方法計算這些值並使用它們;如果方法接受引數,它的例項將用於呼叫和傳遞引數。
相同的事件處理程式也可以為其他控制元件處理相同的事件。例如,如果表單包含 RadioButton 控制元件的集合,你可以為 Click 事件建立單個事件處理程式,並將每個控制元件的 Click 事件繫結到單個事件處理程式。
還有許多其他方法可以使用物件傳送者和事件引數來處理事件,例如當物件形成和分配記憶體時,預定義方法 OnChanged()
、Add()
和 Clear()
用於清理垃圾收集。如果我們希望刪除不需要的引用,我們可以使用預設方法 clear()
和 remove()
。
我們可以使用預設方法來構造和傳輸物件引用,同時使用相同的物件傳送器和事件處理程式機制。我們可以生成兩個不同的事件,通過它們的例項呼叫它們,並生成顯示在輸出控制檯上的每個例項。
為了正確使用物件傳送者,存在一些規則和規定。下面還提到了最佳實踐。
- 如果物件傳送者包含帶有例項的
EventArgs
,則只會執行物件傳送者的使用者操作。因此,物件傳送者必須包含事件 args 作為引數。 - 在大公司系統中,建立和分配物件需要更長的時間,傳輸它們的引用也需要更長的時間。
- 它通過採用同步來避免程序執行緒中的死鎖。所以儘量同步以避免死鎖。
- 建立一個委託物件,其簽名與你嘗試封裝的方法簽名精確對應。
- 定義其簽名對應於你在第四步中建立的委託物件的所有過程。
- 你要封裝的方法應該插入到你建立的委託物件中。
- 使用委託物件呼叫包含的方法。
C# 的語法和約定可以更復雜地使用程式碼並避免重複和程式碼重複,因為它為每組元件提供了許多預定義的關鍵字、方法和屬性。傳送者是傳遞給方法的引數之一,用於它們的類引用和用法,就像那個物件一樣。
I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.
LinkedIn