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;
}