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();
}

在这种情况下matchedString1matchedString2包含相同的值"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 回答