C#的Replace函式,使用函式作為的引數需要注意

iDotNetSpace發表於2010-01-15
#的Replace函式,有關它的引數需要注意:

    如果它的引數是一個表示式,系統會先計算表示式做預處理,再執行替換操作。

  比如(GetNameByID為一個函式):
        String  strSource="這是一個示例";
      strSource=strSource.Replace("姓名",GetNameByID(1));
  很顯然,strSource是不包含“姓名”的,所以也不會執行任何替換。但是,每執行一次這行替換程式碼,GetNameByID都會被呼叫一次。如果GetNameByID是更復雜的邏輯,或者是替換操作在一個迴圈中,將會極大地影響系統效率。
  建議修改為:
      if(strSource.IndexOf("姓名")>-1)
    {
          strSource=strSource.Replace("姓名",GetNameByID(1));
    }

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-625201/,如需轉載,請註明出處,否則將追究法律責任。

相關文章