通常,如果您试图访问一个不存在的数组成员,您会得到一个"IndexOutOfRangeException".
然而,出于某种原因,我没有为Regex-GroupCollection获得这一点.
例如:
var match = Regex.Match("", "a");
var test = match.Groups[6];
不引发异常,尽管match
只有一个组.
为什么会发生这种情况?
通常,如果您试图访问一个不存在的数组成员,您会得到一个"IndexOutOfRangeException".
然而,出于某种原因,我没有为Regex-GroupCollection获得这一点.
例如:
var match = Regex.Match("", "a");
var test = match.Groups[6];
不引发异常,尽管match
只有一个组.
为什么会发生这种情况?
这是故意的.
参见GroupCollection
documentation:
If 103 is not the index of a member of the collection,或者如果
groupnum
是输入字符串中未匹配的捕获组的索引,则该方法返回Group对象,其Group.Success属性为false
,Group.Value
属性为String.Empty.
我将句子的开头加粗,因为它描述了您当前的场景:a
regex模式在空字符串中找不到匹配项,匹配项为空,并且没有ID=6的组.