我似乎在视觉工作室收到一条错误消息说
Value cannot be null.
Parameter name: input
当我尝试做
Match BirthYear2 = Regex.Match(kvpInd2.Value.birth.date, BirthPattern2);
我想知道是否可以允许 Match 函数产生空值?基本上,我不介意如果kvpInd2.Value.birth.date
不包含表达式
谢谢
我似乎在视觉工作室收到一条错误消息说
Value cannot be null.
Parameter name: input
当我尝试做
Match BirthYear2 = Regex.Match(kvpInd2.Value.birth.date, BirthPattern2);
我想知道是否可以允许 Match 函数产生空值?基本上,我不介意如果kvpInd2.Value.birth.date
不包含表达式
谢谢
在您的情况下,Regex.Match
不产生a null
,而是将a作为其第一个参数传递。null
异常: ArgumentNullException -
input
或pattern
为空。
如果您想让null
输入有效,您可以按如下方式更改您的调用:
Match BirthYear2 = Regex.Match(kvpInd2.Value.birth.date ?? "", BirthPattern2);
这将在is时返回不匹配(假设BirthPattern2
不匹配空字符串),而不是抛出异常。kvpInd2.Value.birth.date
null
这里最可能的问题kvpInd2.Value.birth.date
是null
. Regex.Match
如果找不到模式,则不会抛出异常,但如果输入为空,则会抛出您看到的异常。
只需在匹配之前检查该值是否为空。完毕。或者,我错过了什么?另一种选择,我想你可以这样做:kvpInd2.Value.birth.date ?? ""
. 这会将 null 视为一个空字符串,(希望)您的模式将不匹配。
在访问所有该属性链之前,您需要检查链中是否没有对象为空。
if(kvpInd2 != null && kvpInd2.Value != null && kvpInd2.Value.birth != null && kvpInd2.Value.birth.date!= null) {
Match BirthYear2 = Regex.Match(kvpInd2.Value.birth.date, BirthPattern2);
...
}