Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个声明在C#net中是什么意思?_C#_.net_Compiler Construction_Mono - Fatal编程技术网

这个声明在C#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

我在.NET中有以下声明。我想知道这个声明的确切含义(第二行),尤其是
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处理程序 添加,并在删除所有事件处理程序后删除该处理程序


嗯,可能是一名代表。。。它也可能是一个构造函数接受委托的类。谢谢你的回答,我刚刚对这个问题进行了更详细的编辑,以避免误解。这是一个很好的答案。非常详细。