1

ビジュアルスタジオでエラーメッセージが表示されているようです

Value cannot be null.
Parameter name: input

やってみると Match BirthYear2 = Regex.Match(kvpInd2.Value.birth.date, BirthPattern2);

Match 関数が null を生成できるようにすることは可能でしょうか? 基本的にkvpInd2.Value.birth.date、表現が含まれていなくてもかまいません

ありがとうございました

4

4 に答える 4

10

あなたの場合、Regex.Matchはaを生成していません。最初のパラメーターとしてa を渡していnullますnull

例外: ArgumentNullException -inputまたはpatternnull です。

入力を有効にしたい場合はnull、次のように呼び出しを変更できます。

Match BirthYear2 = Regex.Match(kvpInd2.Value.birth.date ?? "", BirthPattern2);

これは、例外をスローするのではなく、isのBirthPattern2場合に一致なしで返されます (空の文字列と一致しないと仮定します)。kvpInd2.Value.birth.datenull

于 2012-05-31T17:46:03.250 に答える
4

ここで最も可能性の高い問題はkvpInd2.Value.birth.datenull. Regex.Matchパターンが見つからない場合は例外をスローしませんが、入力が null の場合に表示されている例外をスローします。

于 2012-05-31T17:46:17.380 に答える
0

一致を行う前に、値が null かどうかを確認してください。終わり。または、何か不足していますか?別のオプションは、次のことができると思いますkvpInd2.Value.birth.date ?? ""。これは、(うまくいけば) パターンが一致しない空の文字列として null を扱います。

于 2012-05-31T17:45:50.567 に答える
0

すべてのプロパティ チェーンにアクセスする前に、チェーン内のオブジェクトが 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);
    ...
}
于 2012-05-31T17:48:36.323 に答える