VB.NET中New Byte(-1){}的含义及C#转换报错问题
VB中
New Byte(-1) {}的含义及C#转换方案 1. VB代码里-1的作用
在VB.NET中,数组声明语法为New 数据类型(数组上界)。当指定上界为-1时,会创建一个长度为0的空数组——因为数组下标范围是从0到设定的上界,上界为-1意味着没有有效下标,数组内不存在任何元素。
你代码里的c = If(c, New Byte(-1) {} ),本质是空值兜底逻辑:如果可选参数c为Nothing(未传参或传入空值),就将其替换为空数组,避免后续操作触发空引用异常。
2. C#转换的解决方法
C#的数组初始化规则和VB不同,它不允许用负数作为数组长度(这也是转换工具报错的原因)。要实现和VB代码一致的逻辑,可用两种写法:
- 推荐使用
Array.Empty<byte>()(支持.NET Framework 4.6+、.NET Core及以上版本):c = c ?? Array.Empty<byte>(); - 或者直接创建长度为0的数组:
c = c ?? new byte[0];
这两种写法都能生成空字节数组,和VB里的New Byte(-1) {}功能完全匹配。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

