在进行字符串替换之前是否没有必要使用这个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,Auto或Watch窗口中的符号; 有关详细信息,请参阅Common Expression Evaluator Features),产生以下输出:
s | "Test" {$1}
s2 | "Test" {$1}
s3 | "Tttt" {$2}
Run Code Online (Sandbox Code Playgroud)