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

如何使用foreach循环获取字符串数组元素值?解决索引越界报错

问题分析与解决

问题描述

用户定义字符串数组:

string[] wordsX ={"word1", "word2","word3"};

希望通过foreach循环获取元素值并赋值给Label控件,编写的代码如下:

foreach (string w in wordsX)
{
    Label1.Text = w[1].ToString();
    Label2.Text = w[2].ToString();
}

运行时出现报错:Index was outside the bounds of the array.(中文翻译:索引超出了数组界限。)

错误原因

你混淆了两种索引的用法:

  • wordsX是字符串数组,每个循环变量w代表数组里的单个字符串元素(比如"word1")
  • 代码里的w[1]是取字符串w的第2个字符(字符串索引从0开始),如果某个字符串长度不足2,就会触发索引越界
  • 更关键的是,你的需求是把数组中的完整字符串元素赋值给Label,但当前代码却在提取字符串的单个字符,完全偏离了目标

正确写法

方式1:直接按数组索引赋值(最简洁)

如果只是想把数组前两个元素分别赋值给Label1和Label2,不需要foreach循环,直接通过数组索引访问即可:

// 先判断数组长度,避免索引越界
if (wordsX.Length >= 2)
{
    Label1.Text = wordsX[0];
    Label2.Text = wordsX[1];
}

方式2:用foreach配合计数器(适合需要遍历数组的场景)

如果必须用foreach循环(比如同时要做其他遍历操作),可以添加计数器来匹配对应Label:

int count = 0;
foreach (string w in wordsX)
{
    if (count == 0)
        Label1.Text = w;
    else if (count == 1)
        Label2.Text = w;
    count++;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:35:31