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

时间:2016-02-24 15:52:14

标签: c# delegates

我想了解以下代码。

它有一个函数 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);
        }
    }
}

抱歉代码格式不正确。我发现在这里使用格式选项非常困难。

1 个答案:

答案 0 :(得分:0)

  

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

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

定义委托的整个将是您定义方法签名的位置,以便在其他地方您可以使用委托标识符来引用匹配该签名的方法