C# System.ArgumentOutOfRangeException:容量小于当前大小。(参数值)

C# System.ArgumentOutOfRangeException:容量小于当前大小。(参数值),c#,C#,有人能解释一下为什么我从下面的代码中得到下面的错误吗 System.ArgumentOutOfRangeException: capacity was less than the current size. (Parameter 'value') 我试着用分号分隔列表,然后用逗号分隔 预期的ChannelCodeToBox映射参数值如下所示01,0;02,1;03,1;05,1;06,0;07,1;08,1 代码: 注: this.box是枚举列表,即listthis.box的类型是什么?这是

有人能解释一下为什么我从下面的代码中得到下面的错误吗

System.ArgumentOutOfRangeException: capacity was less than the current size. (Parameter 'value')
我试着用分号分隔列表,然后用逗号分隔

预期的ChannelCodeToBox映射参数值如下所示
01,0;02,1;03,1;05,1;06,0;07,1;08,1

代码:

注:


this.box
是枚举列表,即
list

this.box的类型是什么?这是否回答了您的问题?您是否可以
Int16.TryParse(channelCodeAndBoxSplit[1],out var i)
而不是
Convert.ToInt16(channelCodeAndBoxSplit[1])
并查看转换是否成功?因为有时字符串不是16位整数,有时是?@Bhav-您可能会得到
ArgumentOutOfRangeException
,因为
channelCodeAndBoxSplit
数组可能为空(因此在第1个索引处可能根本不包含任何内容)。您介意检查这个字符串数组是否确实包含某些内容吗?
private bool DetermineWhetherInSingleBoxModeFromChannelCodeMappings(string channelCodeToBoxesMapping)
{
    this.boxes.Clear();
    
    if (string.IsNullOrWhiteSpace(channelCodeToBoxesMapping))
    {
        return false;
    }

    var channelCodeAndBoxPairs = channelCodeToBoxesMapping.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
    foreach (var pair in channelCodeAndBoxPairs)
    {
        var channelCodeAndBoxSplit = pair.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
        if (channelCodeAndBoxSplit.Length != 2)
        {
            continue;
        }

        this.boxes.Add((BoxCount.Boxes)Convert.ToInt16(channelCodeAndBoxSplit[1]));
    }

    return this.boxes.Distinct().Count() == 1;
}