0
我想了解下面的代碼。委託與參數定義但用作參數沒有自己的參數? c#
它有一個功能創建與代表CallbackRcvData作爲參數。 委託是用參數定義的,但代碼中的函數只是將委託作爲參數表示,但該參數/委託沒有自己定義中的必需參數。這個構造奇妙地起作用。我不明白...我是代表新人。如果您需要更多信息,請告訴我們
函數OpenConnection來自dll。
public class myClass
{
public delegate int CallbackRcvData(UInt32 ConnectionId, IntPtr Data, Int32 size, Int32 Status);
public void Create(string TargetName, string Login, string Password, Int32 Protocol,UInt32 PortCOM, CallbackRcvData Callback)
{
int result = 0;
result = OpenConnection(TargetName, ref this.ConnectionId, Login, Password, 0, Protocol, 0, 0, Callback,0);
if (result != 0)
{
throw new System.ArgumentException("Parameter cannot be null", "original");
}
}
}
public class callingClass
{
...in some Method
ptrFct = new myClass.CallbackRcvData(this.RcvData);
public int RcvData(UInt32 ConnectionId,IntPtr Data, Int32 size, Int32 Status)
{
if ((size > 0) && (Status == 0) && (Data != null))
{
this.Displaytext(Marshal.PtrToStringAnsi(Data));
}
return 0;
}
public void ThreadProc()
{
try
{
//open putty session , portCOM not used in this example not serial link
Session.Create(Settings.DeviceAdd, Settings.Login, Settings.Password, Settings.protocol, 0, ptrFct);
this.Connection_End(1);
}
catch
{
this.Connection_End(0);
}
}
}
抱歉,錯誤代碼格式不正確。我發現在這裏使用格式選項非常困難。
我想我明白了。委託* Callback *可以被理解爲指向函數的指針,它被引用到* OpenConnection *函數中,該函數又用參數調用引用的函數。 – Simorgh