gpt4 book ai didi

c# - 将可变参数传递给委托(delegate)

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:19 24 4
gpt4 key购买 nike

我有以下委托(delegate):

public delegate object DynamicFunction(dynamic target, params object[] args);

但是,当我尝试创建它时:

DynamicFunction func = new DynamicFunction((t) => {
//Handle t
});

编译器抛出一个错误,指出委托(delegate)不接受 1 个参数,即使我将最后一个参数指定为 params object[] 类型也是如此。

如果我将 exacly one 额外参数传递给委托(delegate),它会起作用。例如:

DynamicFunction func = new DynamicFunction((t,a) => {
//Handle t
});

但是,我不想指定额外的参数,因为我有意希望这些参数是可选的。

这里发生了什么?

最佳答案

params 意味着当您调用函数将您传递给数组的任何参数转换时,编译器会做一些聪明的事情。

不是说函数本身有1个或2个参数,也不是说有2个版本的函数f(dynamic target)f(dynamic target, params object [] args).

请注意,您仍然希望能够调用

func (1);
func(1, optional1, optional2);

因此您的委托(delegate)人需要同时处理这两个问题。

关于c# - 将可变参数传递给委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29927894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com