我应该在string.Replace()之前使用string.Contains()吗?

Pat*_*cio 6 .net c#

在进行字符串替换之前是否没有必要使用这个if语句?

 if (myString.Contains(oldValue))
 {
      myString = myString.Replace(oldValue, newValue);
 }
Run Code Online (Sandbox Code Playgroud)

IIn*_*ble 12

所有细节都在String.Replace的文档中:

返回值:
与当前字符串等效的字符串,但oldValue的所有实例都替换为newValue.如果在当前实例中找不到oldValue,则该方法返回当前实例不变.

if不需要声明.

一种if说法甚至不是一个性能优化,因为String.Replace返回同一个对象实例,如果属性oldValue找不到.我已使用以下代码验证了这一点:

namespace StringReplaceTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "Test";
            string s2 = s.Replace("Foo", "Bar");
            string s3 = s.Replace("es", "tt");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用方便的Make Object ID功能(右键单击Locals,AutoWatch窗口中的符号; 有关详细信息,请参阅Common Expression Evaluator Features),产生以下输出:

s  | "Test" {$1}
s2 | "Test" {$1}
s3 | "Tttt" {$2}
Run Code Online (Sandbox Code Playgroud)