委托具有不同数量参数的方法
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);
除此之外,您正确地创建了一个调用两个方法的委托,因此调用它会调用您添加到其中的两个方法。
我 运行 遇到了问题。我有这样的东西:
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);
除此之外,您正确地创建了一个调用两个方法的委托,因此调用它会调用您添加到其中的两个方法。