簡體   English   中英

C#.net中的此聲明是什么意思?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM