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