CS1503 将带有参数的方法传递给接受Action类型参数的方法会导致语法错误

报错:CS1503: 参数1: 无法从”void”转换为“UnityEngine.Events.UnityAction
c# - 无法从 ‘void’ 转换为 ‘System.Action’

您试图将一个返回值为 void 的方法传递给了一个期望 Action 类型的方法,但是将带有参数的方法传递给接受Action类型参数的方法会导致语法错误。

可以使用 lambda 表达式来创建一个 Action,然后将其传递给 Invoke 方法。lambda 表达式允许您在需要 Action 类型的地方提供一段代码块,这段代码块可以是调用方法、执行一些操作等。

创建一个匿名的 Action,用这个 Action 来执行 Method2(testParam) 方法:

Invoke(() => Method2(testParam));

在更显式的情况下,您可以首先将 lambda 表达式赋值给一个 Action 变量,然后将该变量传递给 Invoke 方法,如下所示:

Action a = () => Method2(testParam);
Invoke(a);

这两种方式的作用是相同的,只是一种更为简洁,另一种更为显式。

Invoke(Method1);
Invoke(() => Method1());
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值