C#,索引在数组的边界之外

本文关键字:边界 数组 索引 | 更新日期: 2023-09-27 18:31:04

我有以下代码:

void serialport_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        string serialData = serialport.ReadExisting().Replace("/n", "");
        string[] splitSerialData = serialData.Split(new Char[] {','}); //Split up the data
        this.Invoke(new Action(delegate()
            {
                this.temperatureLabel.Text = splitSerialData[0];
            }));
    }

它工作正常,但是当我这样做时:

void serialport_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        string serialData = serialport.ReadExisting().Replace("/n", "");
        string[] splitSerialData = serialData.Split(new Char[] {','}); //Split up the data
        this.Invoke(new Action(delegate()
            {
                this.temperatureLabel.Text = splitSerialData[0];
                this.lightLevelLabel.Text = splitSerialData[1];
            }));
    }

它不起作用,并显示"索引超出数组的范围"。

C#,索引在数组的边界之外

您收到此错误是因为serialData不包含逗号。 因此,生成的数组包含一个元素,表达式splitSerialData[1]抛出 IndexOutOfRangeException。

这意味着拆分只返回一个元素 - 整个字符串。索引 1 处没有数组元素,因此

splitSerialData[1]

引发IndexOutOfBounds异常。

反过来,这意味着您传递的字符串不包含逗号','字符。