.NET:&;函数名语法

.NET:&;函数名语法,.net,delegates,c++-cli,.net,Delegates,C++ Cli,语法&function\u name是什么意思 例如,在委托中使用 System::ComponentModel::DoWorkEventHandler(this, &Form1::DoWorkEvent) 与BackgroundWorker对象的事件处理一起使用 委托原型是 public delegate void DoWorkEventHandler(Object^ sender, DoWorkEventArgs^ e) 这可能意味着&Form1::DoWorkEvent返回一个

语法
&function\u name
是什么意思

例如,在委托中使用

System::ComponentModel::DoWorkEventHandler(this, &Form1::DoWorkEvent)
BackgroundWorker
对象的事件处理一起使用

委托原型是

public delegate void DoWorkEventHandler(Object^ sender, DoWorkEventArgs^ e)

这可能意味着
&Form1::DoWorkEvent
返回一个
DoWorkEventArgs
对象?但是这没有什么意义。

< p>我的C++是很生锈的,但我认为你根本看不到.NET,但是一个标准的C++成员函数指针。

<代码>系统::组件模型::DoWorkEventHandler(这个,and Fr1::DoOrkEvEvices)< /Cult>创建一个委托。创建委托的语法是
gcnewdelegatename(thisObject,functionPointer)
。它创建一个委托,调用
functionPointer
,将
this
设置为
thisObject

要调用委托,可以使用适当的参数调用它
delegateVariable->Invoke(参数1、参数2等)
。在
DoWorkEventHandler
的情况下,
参数1
发送方
参数2
e

你混淆了两个不同的东西,创造和调用。行
DoWorkEventHandler(this,&Form1::DoWorkEvent)
创建一个委托。这两个参数是
thisObject
functionPointer
,而不是
sender
e

这应该包含在您最初用来了解学员的任何书籍/资源中。例如,他说

创建委托实例涉及调用构造函数。如果你 在封装静态函数时,传入一个参数 指向该成员函数的指针。对于实例函数,必须 传入两个参数:该实例的句柄,以及指向 实例成员函数


如果某个东西显然是关于c++/CLI特有的语法,为什么要标记它呢?这个概念似乎与c中的概念相似(至少快速浏览一下),所以我想我应该标记它以获得c程序员的输入。如果概念不同,我很抱歉。你问的是具体的语法,而不是基本概念。语法是不同的