如何在C#委托中忽略不需要的参数?
解决方案
完全可以实现,不用修改原委托定义,也不用给AddArmor加无用参数,用Lambda表达式做个简单适配就行:
直接用Lambda表达式订阅
把订阅代码改成这样,用Lambda接收委托的参数但直接忽略,调用无参数的AddArmor:
health.onKill += (_, __) => AddArmor();
这里的_和__是C#里用来标记“不需要用到的参数”的惯例写法,也可以随便写个变量名(比如x, y),但下划线更直观。
(可选)封装适配方法
要是需要多次订阅这个逻辑,也可以写个适配层方法,再订阅这个方法:
// 适配方法,接收委托要求的参数,内部调用无参数的AddArmor private void AddArmorAdapter(string unused1, string unused2) { AddArmor(); } // 订阅时用这个适配方法 health.onKill += AddArmorAdapter;
这两种方式都能满足你的需求:既保留原委托对其他脚本的参数传递能力,又能让无参数的AddArmor方法正常订阅。
内容的提问来源于stack exchange,提问作者Secret veiwer
相关产品推荐
相关产品推荐

