關於這個問題先來看一段代碼:
String
strPath = sImagePath + "\\" +
sIP.ToString() + "\\高清圖\\" +
Convert.ToString(dt.Year) + Convert.ToString(dt.Month)
+ Convert.ToString(dt.Day); Directory.CreateDirectory(strPath); strSpeFile
= strPath + "\\" +
strTime + "(" +
sPlate.ToString() + ").jpg" ; //將抓拍圖片存儲到隊列中 queueImg.Enqueue(strSpeFile); log.Error( "車牌識別圖片路徑:" +
strSpeFile); strPath
= sImagePath + "\\" +
sIP.ToString() + "\\車牌圖\\" +
Convert.ToString(dt.Year) + Convert.ToString(dt.Month)
+ Convert.ToString(dt.Day); Directory.CreateDirectory(strPath); strPlateFile
= strPath + "\\" +
strTime + "(" +
sPlate.ToString() + ").jpg" ; strPath
= sImagePath + "\\" +
sIP.ToString() + "\\二值化圖\\" +
Convert.ToString(dt.Year) + Convert.ToString(dt.Month)
+ Convert.ToString(dt.Day); Directory.CreateDirectory(strPath); strTwoFile
= strPath + "\\" +
strTime + "(" +
sPlate.ToString() + ").bin" ; |
使用“+”來拼接字符串,應該是最常見的做法,很直觀,但也是最低級的做法,說到優化,大家很容易就想到了 string.Format、StringBuilder等方法或類來處理。
比如用 string.Format來處理一段代碼,如下
String
strPath = string .Format( "{0}\\{1}\\高清圖\\{2}{3}{4}" ,sImagePath,sIP.ToString(),
Convert.ToString(dt.Year), Convert.ToString(dt.Month),Convert.ToString(dt.Day)); |
看起來不錯,節儉多了,性能上來說也有所提高。然後有個人突然告訴你,你的參數順序寫錯了,然後你又急急忙忙一個一個的去對。。
之後你又換了個方法,用StringBuilder,代碼如下
StringBuilder
str= new StringBuilder(); str.Append(sImagePath); str.Append( "\\" ); str.Append(sIP.ToString()); str.Append( "\\高清圖\\" ); str.Append(Convert.ToString(dt.Year)); str.Append(Convert.ToString(dt.Month)); str.Append(Convert.ToString(dt.Day)); |
這下總不會多或者少了吧,性能也一樣提高了,正當你要忘記了的時候,突然有天你有看到了這段代碼,看了好半天才終於知道自己要拼的什麼字符串,也是醉了…
你看看下面這段代碼
String
strPath = $ "{sImagePath}\\{sIP.ToString()}\\高清圖\\{Convert.ToString(dt.Year)}{Convert.ToString(dt.Month)}{Convert.ToString(dt.Day)}" ; Directory.CreateDirectory(strPath); strSpeFile
= $ "{strPath}\\{strTime}({sPlate.ToString()}).jpg" ; //將抓拍圖片存儲到隊列中 queueImg.Enqueue(strSpeFile); log.Error($ "車牌識別圖片路徑:{strSpeFile}" ); strPath
= $ "{sImagePath}\\{sIP.ToString()}\\車牌圖\\{Convert.ToString(dt.Year)}{Convert.ToString(dt.Month)}{Convert.ToString(dt.Day)}" ; Directory.CreateDirectory(strPath); strPlateFile
= $ "{strPath}\\{strTime}({sPlate.ToString()}).jpg" ; strPath
= $ "{sImagePath}\\{sIP.ToString()}\\二值化圖\\{Convert.ToString(dt.Year)}{Convert.ToString(dt.Month)}{Convert.ToString(dt.Day)}" ; Directory.CreateDirectory(strPath); strTwoFile
= $ "{strPath}\\{strTime}({sPlate.ToString()}).bin" ; |
跟前面的都比較一下,是不是也能很快就看出來,變量也不用擔心寫錯地方,性能怎麼樣?也是槓槓的。如果你還沒有見過這種寫法,那說明你out了,這是新技能。