定义了参数但用作参数而没有自己参数的委托?c#
我正在努力理解下面的代码 它有一个函数create,其中委托CallbackRcvData作为参数。 委托是用参数定义的,但代码中的函数只是将委托声明为参数,但该参数/委托没有自己定义中所需的参数。这个结构工作得很好。我不明白…我是新来的。如果你需要更多的信息,请告诉我 函数OpenConnection来自一个dll定义了参数但用作参数而没有自己参数的委托?c#,c#,delegates,C#,Delegates,我正在努力理解下面的代码 它有一个函数create,其中委托CallbackRcvData作为参数。 委托是用参数定义的,但代码中的函数只是将委托声明为参数,但该参数/委托没有自己定义中所需的参数。这个结构工作得很好。我不明白…我是新来的。如果你需要更多的信息,请告诉我 函数OpenConnection来自一个dll public class myClass { public delegate int CallbackRcvData(UInt32 ConnectionId, In
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);
}
}
}
很抱歉,错误的代码格式。我只是觉得很难使用这里的格式选项
代码中的函数只是将委托声明为参数,但该参数/委托没有其自己定义中所需的参数
当您尝试将类作为参数传递给方法时,是否需要将该类中的所有方法都包含在参数列表中?是否需要提供类的所有属性等
定义委托的关键在于定义方法的签名,以便在其他地方可以使用委托标识符引用与该签名匹配的方法。我想我明白了。委托回调可以理解为指向函数的指针,它被引用到OpenConnection函数,OpenConnection函数反过来使用参数调用被引用的函数。