委托具有不同数量参数的方法

Delegates with methods that have different number of parameters

我 运行 遇到了问题。我有这样的东西:

public class ListSorter : MonoBehaviour 
{    
    public delegate void MyDelegate();
    public static MyDelegate myDelegate;    
    void Start () 
    {
        ListSorter.myDelegate += A(5);// <-- here I know i cant do it
        ListSorter.myDelegate += B;    
        myDelegate(); //<-- how to call 2 different function with one delegate?
    }
    public void A(int iVar)
    {
        print(iVar);
    }    
    public void B()
    {
        ///...
    }
}

如您所见,我已经知道我想要的参数位置和数量。问题是当函数A有参数而B没有参数时,如何调用函数A和B?

将函数调用包装在与目标类型匹配的匿名委托中(无参数,无 return 值):

ListSorter.myDelegate += (() => A(5));
ListSorter.myDelegate += B;

要使用固定参数调用 A,您需要创建一个与委托签名匹配的新方法,即没有参数且没有 return 值,谁的主体调用 A , 通过 5。您可以使用新的命名方法来完成此操作,也可以使用匿名方法;两者都可以正常工作:

ListSorter.myDelegate += () => A(5);

除此之外,您正确地创建了一个调用两个方法的委托,因此调用它会调用您添加到其中的两个方法。