定义了参数但用作参数而没有自己参数的委托?c#

定义了参数但用作参数而没有自己参数的委托?c#,c#,delegates,C#,Delegates,我正在努力理解下面的代码 它有一个函数create,其中委托CallbackRcvData作为参数。 委托是用参数定义的,但代码中的函数只是将委托声明为参数,但该参数/委托没有自己定义中所需的参数。这个结构工作得很好。我不明白…我是新来的。如果你需要更多的信息,请告诉我 函数OpenConnection来自一个dll public class myClass { public delegate int CallbackRcvData(UInt32 ConnectionId, In

我正在努力理解下面的代码

它有一个函数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);
        }
    }
}
很抱歉,错误的代码格式。我只是觉得很难使用这里的格式选项

代码中的函数只是将委托声明为参数,但该参数/委托没有其自己定义中所需的参数

当您尝试将类作为参数传递给方法时,是否需要将该类中的所有方法都包含在参数列表中?是否需要提供类的所有属性等


定义委托的关键在于定义方法的签名,以便在其他地方可以使用委托标识符引用与该签名匹配的方法。

我想我明白了。委托回调可以理解为指向函数的指针,它被引用到OpenConnection函数,OpenConnection函数反过来使用参数调用被引用的函数。