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

为何用ForEach循环给整型数组赋值时抛出‘未将对象引用设到对象实例’异常

问题原因

  • 第一个核心问题:你没有对arNum整型数组做初始化,只声明了变量没有分配实际的内存空间,属于空对象,对空对象的元素赋值就会抛出「未将对象引用设置到对象的实例」异常。
  • 第二个逻辑错误:count变量定义在foreach循环内部,每次循环都会被重置为-1,执行+1后永远是0,最终你只会给arNum[0]反复赋值,其他数组位置都不会被写入数据。
  • 额外优化提示:你直接写letter + 5是char类型和int类型相加,得到的就是ASCII码加5后的数值,不需要再套Convert.ToInt32也能拿到正确结果,属于冗余写法。

修正方案

首先需要在循环外初始化arNum数组,长度和你遍历的arReverse长度一致即可,同时把count变量移到循环外面:

// 先初始化数组,长度和arReverse保持一致
int[] arNum = new int[arReverse.Length];
// count变量移到循环外初始化
int count = -1;
foreach (char letter in arReverse)
{
    count = count + 1;
    int num = letter + 5;
    Console.Write(num);
    Console.Write(" ");
    arNum[count] = num;
}

也可以直接用for循环更简洁,不需要单独维护count变量:

int[] arNum = new int[arReverse.Length];
for(int i = 0; i < arReverse.Length; i++)
{
    char letter = arReverse[i];
    int num = letter +5;
    Console.Write(num + " ");
    arNum[i] = num;
}

内容的提问来源于stack exchange,提问作者Dingo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 17:36:05