[英]What does this declaration in C# .net mean?
我在.NET中有以下聲明。 我想知道此聲明的確切含義(第二行),尤其是DoConsoleCancelEvent
delegate void InternalCancelHandler;
static readonly InternalCancelHandler cancel_handler =
new InternalCancelHandler (DoConsoleCancelEvent);
DoConsoleCancelEvent
聲明為:
internal static void DoConsoleCancelEvent{...}
.NET中使用的術語是什么? 是.NET反射嗎?
InternalCancelHandler
是一個delegate
,這是保存對特定方法的引用的C#方法。 第一行將委托定義為引用具有void
返回值且不帶參數的方法(因為沒有參數列表。)此定義:
delegate int InternalCancelHandler(bool boolParam);
定義一個委托,該委托將引用一個返回int
並接受單個bool
參數的方法。
下一行是該委托類型的靜態只讀字段的聲明,該字段初始化為引用DoConsoleCancelEvent
方法的新實例。
有了該聲明,您現在可以通過調用委托來調用 DoConsoleCancelEvent
:
public static void CallDelegate()
{
// This line will actually call DoConsoleCancelEvent
MyType.cancel_handler();
}
請注意,委托類型末尾的Handler
表示它是一個事件處理程序,這意味着您更有可能希望使用它來訂閱事件:
public static void EventSub()
{
// This line makes it so that cancel_handler is called when
// SomeEvent is fired. Since cancel_handler actually refers
// to DoConsoleCancelEvent, it is *that* method that will
// actually be run
SomeType.SomeEvent += cancel_handler;
}
static
表示該字段與相關聯的Type
,而不是一個特定實例Type
readonly
表示只能在構造Type
期間分配字段
我相信您要尋找的術語是Delegate 。
在這種情況下, InternalCancelHandler
是委托。 代碼的第一行創建一個指向您的DoConsoleCancelEvent
方法的委托。 然后,該委托將在以后的某個時間點用於調用您的方法。
InternalCancelHandler
是一個delegate
。
根據Mono的承諾 ,這就是DoConsoleCancelEvent
:
添加對Windows的Win32函數SetConsoleCtrlHandler的調用,該函數在添加事件處理程序時將針對DoConsoleCancelEvent的DoWindowsConsoleCancelEvent包裝器添加到Ctrl-C處理程序,並在刪除所有事件處理程序后將其刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.