3

次のコードがあります。

Match matcher = new Regex("[0-9]+.[0-9]+.[0-9]+").Match("12/02/1994");

if (matcher.Success)
{
   string matchedString1 = matcher.Value;
   string matchedString2 = matcher.ToString();
}

この場合matchedString1、 とmatchedString2には同じ値が含まれます"12/02/1994"。正規表現に対して常に同じ結果を返していますmatcher.Valueか?matcher.ToString()

4

2 に答える 2

5

Match クラスは Group クラスから派生し、これはCaptureクラスから派生します。

Capture クラスは、次のコードで ToString() メソッドをオーバーライドします。

[__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
public override string ToString()
{
    return this.Value;
}

はい、同じ値です。

于 2013-01-18T23:22:29.803 に答える
2

MSDNから;

Capture.Value財産;

入力文字列からキャプチャされた部分文字列を取得します。

Capture.ToString()方法。

Valueプロパティを呼び出して、キャプチャされた部分文字列を入力文字列から取得し ます。

.NET Reflectorを見ても、このようなCaptureクラス オーバーライドToString()メソッドであることがわかります。

[__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
public override string ToString()
{
    return this.Value;
}

あ、はい。それらは同じ値を持っています。

于 2013-01-18T23:23:43.250 に答える