我似乎在视觉工作室收到一条错误消息说
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.datenull
这里最可能的问题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);
...
}