C#的Replace函数,使用函数作为的参数需要注意

#的Replace函数,有关它的参数需要注意:

    如果它的参数是一个表达式,系统会先计算表达式做预处理,再执行替换操作。

  比如(GetNameByID为一个函数):
        String  strSource="这是一个示例";
      strSource=strSource.Replace("姓名",GetNameByID(1));
  很显然,strSource是不包含“姓名”的,所以也不会执行任何替换。但是,每执行一次这行替换代码,GetNameByID都会被调用一次。如果GetNameByID是更复杂的逻辑,或者是替换操作在一个循环中,将会极大地影响系统效率。
  建议修改为:
      if(strSource.IndexOf("姓名")>-1)
    {
          strSource=strSource.Replace("姓名",GetNameByID(1));
    }
原文地址:https://www.cnblogs.com/techrich/p/1647937.html