fx.*_*fx. 2 .net c# compiler-construction mono
我在.NET中有以下声明.我想知道这个声明究竟是什么意思(第二行),特别是DoConsoleCancelEvent
delegate void InternalCancelHandler;
static readonly InternalCancelHandler cancel_handler =
new InternalCancelHandler (DoConsoleCancelEvent);
Run Code Online (Sandbox Code Playgroud)
该DoConsoleCancelEvent声明为:
internal static void DoConsoleCancelEvent{...}
Run Code Online (Sandbox Code Playgroud)
.NET中使用的术语是什么?是.NET反射吗?
InternalCancelHandler是一种delegateC#方式,用于保存对特定方法的引用.第一行定义委托引用具有void返回的方法,并且不带参数(因为没有参数列表.)此定义:
delegate int InternalCancelHandler(bool boolParam);
Run Code Online (Sandbox Code Playgroud)
定义一个委托,该委托将引用一个返回int并接受单个bool参数的方法.
下一行是该委托类型的静态只读字段的声明,该字段初始化为引用该DoConsoleCancelEvent方法的新实例.
使用该声明,您现在可以DoConsoleCancelEvent通过调用委托调用:
public static void CallDelegate()
{
// This line will actually call DoConsoleCancelEvent
MyType.cancel_handler();
}
Run Code Online (Sandbox Code Playgroud)
请注意,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;
}
Run Code Online (Sandbox Code Playgroud)
static表示该字段与该字段相关联Type,而不是与该字段的特定实例相关联Type
readonly 表示该字段只能在构建期间分配 Type