You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环将多个byte数组引用传入指定方法?

解决方案

核心思路是把所有需要传递的byte[]数组放到一个数组的数组(byte[][])中,通过循环遍历这个二维数组,逐个传递每个子数组的引用。

完整修改后的代码

byte[] mesSend_1 = { 0x01, 0x52, 0x31, 0x02, 0x34, 0x3a, 0x31, 0x37, 0x30, 0x2e, 0x30, 0x2e, 0x30};
byte[] mesSend_2 = { 0x01, 0x52, 0x31, 0x02, 0x31, 0x3a, 0x31, 0x38, 0x30, 0x2e, 0x30 };
byte[] mesSend_3 = { 0x01, 0x52, 0x31, 0x02, 0x30, 0x36, 0x3a, 0x33, 0x31, 0x30, 0x5f};

// 把所有需要传递的byte数组放到一个二维数组里
byte[][] messageList = { mesSend_1, mesSend_2, mesSend_3 };

foreach (var msg in messageList)
{               
    // 传递每个数组的引用给方法
    ReadoutLis200.ExchangeFirstPhase(ref msg, 3000, 60, ref portDataFull, ref CheckBCCBool, coutPhase);
}

为什么之前的尝试失败?

  • 用字符串数组替代:字符串数组存储的是字符串对象,和byte[]类型完全不兼容,方法需要的是byte[]的引用,自然会报错。
  • 用循环变量i关联变量名:C#不支持通过字符串拼接(比如mesSend_+i)直接获取变量引用,这种动态变量名的写法在静态语言里不成立。

补充说明

如果你的方法ExchangeFirstPhase会修改传入的byte[]数组内容,这种方式完全适用——因为ref传递的是数组变量的引用,方法内的修改会直接作用到原来的mesSend_1、mesSend_2等数组上。

内容的提问来源于stack exchange,提问作者Субботин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:27:05