.NET/C# Action中的泛型T 传入数组时无效?

丨背水丨 2020-03-26 11:56:15

//模拟场景
//这里反正就是获取到一个object[],具体是什么不重要
object[] objs = modbusObj.StringArrayFromHexStr().ToObjArray();
string s;
Invoke(new Action<string>(items =>
{
s = items;
}), objs[1]);


上述代码没有问题,变量s可以获取到obj[1]的值

但是当我想把整个object[] 传入时,就会无效

//模拟场景
//这里反正就是获取到一个object[],具体是什么不重要
object[] objs = modbusObj.StringArrayFromHexStr().ToObjArray();
object[] s;
Invoke(new Action<object[]>(items =>
{
s = items;
}), objs);


试了好几次 都是这样,难道说Action中的T 不能传入数组吗。
希望大家能解答一下,很烦
...全文
343 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你应该先贴出 ToObjArray 运行结果的调试。
丨背水丨 2020-03-27
  • 打赏
  • 举报
回复
引用 5 楼 JDD1997 的回复:
Invoke的函数签名是: Invoke(Delegate, Object[]) 其中Object[]是作为参数组使用的,它代表的是一系列参数,而不是一个参数 如果其中有两个对象,比如Object[0] Object[1] 那么相当于是Delegate(Object[0],Object[1]) 而不是 Delegate(Object[]) https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.control.invoke?view=netframework-4.8#System_Windows_Forms_Control_Invoke_System_Delegate_System_Object___ 注意其中 args Object[] 作为指定方法的参数传递的对象数组。 如果此方法没有参数,该参数可以是 null。
感谢
JDD1997 2020-03-27
  • 打赏
  • 举报
回复
Invoke的函数签名是: Invoke(Delegate, Object[]) 其中Object[]是作为参数组使用的,它代表的是一系列参数,而不是一个参数 如果其中有两个对象,比如Object[0] Object[1] 那么相当于是Delegate(Object[0],Object[1]) 而不是 Delegate(Object[]) https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.control.invoke?view=netframework-4.8#System_Windows_Forms_Control_Invoke_System_Delegate_System_Object___ 注意其中 args Object[] 作为指定方法的参数传递的对象数组。 如果此方法没有参数,该参数可以是 null。
正怒月神 2020-03-26
  • 打赏
  • 举报
回复
你用 List<T>吧,
wanghui0380 2020-03-26
  • 打赏
  • 举报
回复
再封一边就好,毕竟用invoke代表在多线程环境下,那么无论微软允不允许,我个人都可以把封成线程安全集合BlockingCollection<object>(甚至极端点可以变成只读安全集合ReadOnlyCollection<object>)
  • 打赏
  • 举报
回复
你看看是不是obj的问题
丨背水丨 2020-03-26
  • 打赏
  • 举报
回复
唉,还是用List<T> 问题记录一下 以后好找

List<object> objs = modbusObj.StringArrayFromHexStr().ToList();
List<object> s;
Invoke(new Action<List<object>>(items =>
{
      s = items;
}), objs);

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧