我想了解以下代码。
它有一个函数 create ,代理 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);
}
}
}
抱歉代码格式不正确。我发现在这里使用格式选项非常困难。
答案 0 :(得分:0)
代码中的函数只是将委托作为参数声明,但该参数/委托没有自己定义中的必需参数
当您尝试将类作为参数传递给方法时,是否需要在参数列表中包含该类中的所有方法?你需要提供班级的所有属性吗?
定义委托的整个点将是您定义方法签名的位置,以便在其他地方您可以使用委托标识符来引用匹配该签名的方法