这个声明在C#net中是什么意思?
我在.NET中有以下声明。我想知道这个声明的确切含义(第二行),尤其是这个声明在C#net中是什么意思?,c#,.net,compiler-construction,mono,C#,.net,Compiler Construction,Mono,我在.NET中有以下声明。我想知道这个声明的确切含义(第二行),尤其是doconsolancelevent delegate void InternalCancelHandler; static readonly InternalCancelHandler cancel_handler = new InternalCancelHandler (DoConsoleCancelEvent); doconsolancelevent声明为: internal static void DoC
doconsolancelevent
delegate void InternalCancelHandler;
static readonly InternalCancelHandler cancel_handler =
new InternalCancelHandler (DoConsoleCancelEvent);
doconsolancelevent
声明为:
internal static void DoConsoleCancelEvent{...}
NET中使用的术语是什么?是.NET反射吗?
InternalCancelHandler
是一个,它是保存对特定方法的引用的C#方式。第一行定义委托引用的方法具有void
返回,并且不接受任何参数(因为没有参数列表)。此定义:
delegate int InternalCancelHandler(bool boolParam);
定义一个委托,该委托将引用返回int
并接受单个bool
参数的方法
下一行是该委托类型的静态只读字段的声明,该字段初始化为引用doconsolancelevent
方法的新实例
使用该声明,您现在可以通过调用委托调用doconsolancelevent
:
public static void CallDelegate()
{
// This line will actually call DoConsoleCancelEvent
MyType.cancel_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;
}
静态
表示该字段与类型
关联,而不是类型
的特定实例
readonly
表示只能在构建类型的过程中分配字段
我相信您要查找的术语是
在本例中,
InternalCancelHandler
是委托。第一行代码创建一个委托,该委托指向您的doconsolancelevent
方法。然后,该委托将用于在稍后的时间点调用您的方法。InternalCancelHandler
是一个委托
根据a,这就是它所说的doconsolancelevent
:
添加对Win32函数SetConsoletrlHandler for Windows的调用,
这将为添加DoWindowsConsoleCancelEvent包装
当一个事件处理程序被调用时,DoConsoleCancelEvent将调用Ctrl-C处理程序
添加,并在删除所有事件处理程序后删除该处理程序
嗯,可能是一名代表。。。它也可能是一个构造函数接受委托的类。谢谢你的回答,我刚刚对这个问题进行了更详细的编辑,以避免误解。这是一个很好的答案。非常详细。