语法&function_name
是什么意思?
例如,在委托中使用
System::ComponentModel::DoWorkEventHandler(this, &Form1::DoWorkEvent)
与用BackgroundWorker
对象进行事件处理时使用的。
委托原型是
public delegate void DoWorkEventHandler(Object^ sender, DoWorkEventArgs^ e)
据推测,这意味着&Form1::DoWorkEvent
会返回DoWorkEventArgs
个对象?但这没有多大意义。
答案 0 :(得分:3)
System::ComponentModel::DoWorkEventHandler(this, &Form1::DoWorkEvent)
创建委托。创建委托的语法是gcnew delegatename(thisObject, functionPointer)
。它会创建一个委托,在functionPointer
设置为this
的情况下调用thisObject
。
要调用委托,您可以使用适当的参数调用它。 delegateVariable->Invoke(parameter1, parameter2, etc)
。对于DoWorkEventHandler
,parameter1
为sender
,parameter2
为e
。
你混淆了两个不同的东西,创造和调用。第DoWorkEventHandler(this, &Form1::DoWorkEvent)
行创建了一个委托。这两个参数是thisObject
和functionPointer
,而不是sender
和e
。
这应该包含在您首先了解代表的任何书籍/资源中。例如,this article说
创建委托实例涉及调用构造函数。如果你 正在封装一个静态函数,你传入一个参数,a 指向该成员函数的指针。对于实例函数,您必须 传递两个参数:该实例的句柄,以及指向的实例 实例成员函数。
答案 1 :(得分:0)
我的C ++非常生疏,但我认为你根本不看.NET,而是标准的C ++成员函数指针。