C#的Replace函数,使用函数作为的参数需要注意
#的Replace函数,有关它的参数需要注意:
如果它的参数是一个表达式,系统会先计算表达式做预处理,再执行替换操作。
比如(GetNameByID为一个函数):
String strSource="这是一个示例";
strSource=strSource.Replace("姓名",GetNameByID(1));
很显然,strSource是不包含“姓名”的,所以也不会执行任何替换。但是,每执行一次这行替换代码,GetNameByID都会被调用一次。如果GetNameByID是更复杂的逻辑,或者是替换操作在一个循环中,将会极大地影响系统效率。
建议修改为:
if(strSource.IndexOf("姓名")>-1)
{
strSource=strSource.Replace("姓名",GetNameByID(1));
}
如果它的参数是一个表达式,系统会先计算表达式做预处理,再执行替换操作。
比如(GetNameByID为一个函数):
String strSource="这是一个示例";
strSource=strSource.Replace("姓名",GetNameByID(1));
很显然,strSource是不包含“姓名”的,所以也不会执行任何替换。但是,每执行一次这行替换代码,GetNameByID都会被调用一次。如果GetNameByID是更复杂的逻辑,或者是替换操作在一个循环中,将会极大地影响系统效率。
建议修改为:
if(strSource.IndexOf("姓名")>-1)
{
strSource=strSource.Replace("姓名",GetNameByID(1));
}