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