关于这个问题先来看一段代码:
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了,这是新技能。