首页 新闻 会员 周边 捐助

pamas object[] 参数,怎么传递一个空对象进去?

0
[已解决问题] 解决于 2024-03-22 14:21

比如 void F(params object[] param)

我调用时如果用 F(null) , 接收到的并不是 {null}, 而是null

白衣如花的主页 白衣如花 | 菜鸟二级 | 园豆:202
提问于:2024-03-20 12:40
< >
分享
最佳答案
0

那就这样Fun(new object[] { null });

奖励园豆:5
复制粘贴机器人 | 小虾三级 |园豆:720 | 2024-03-22 08:50

这样是可以,但是要求所有调用的地方做判断了

if (o == null)
Fun(new object[] {});
else
Fun(o);

白衣如花 | 园豆:202 (菜鸟二级) | 2024-03-22 13:33

@白衣如花: 那没办法了,只能像你前面写的一样,在方法里调整

复制粘贴机器人 | 园豆:720 (小虾三级) | 2024-03-22 13:37
其他回答(2)
0

可以试试 F(null, null)

dudu | 园豆:30948 (高人七级) | 2024-03-20 17:06
0

在 C# 中,使用 params 关键字声明的参数数组允许你向函数传递不定数量的参数。当你使用 F(null) 调用函数时,null 被视为一个参数,而不是一个包含一个空对象的数组。

如果你想传递一个空的对象数组,可以通过如下方式:

csharp
Copy code
F(new object[] { });
这样会创建一个长度为零的对象数组,并将其作为参数传递给 F 函数。

Technologyforgood | 园豆:7535 (大侠五级) | 2024-03-20 18:07

不行,你这个代码参数数量为0

而我的本意是传1个为null的参数

应用场景是我提供了全局注册和调用的消息的消息中心,以消息名称为key,匿名委托为value

有消息通知时,使用Message[messageName].DynamicInvoke(param)的方式来实现消息处理

所以需要参数的数量和我注册时声明的严格一致。

我现在的做法是判断param是否为null,为null的话,我就做一个处理
param = new Object[1];

倒是能用,只是很好奇当时设计params语法功能的时候,没考虑过传单个null对象的情况么。。

支持(0) 反对(0) 白衣如花 | 园豆:202 (菜鸟二级) | 2024-03-21 09:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册