求長度的另一種方法(""+obj).Length
ASP.Net頁面綁定時,標(biāo)題超過20則省略,常規(guī)做法:
Eval("Title")==null?"":(Eval("Title").ToString().Length<=20?Eval("Title").ToString():Eval("Title").ToString().Substring(0,17)+"…")
我先說結(jié)果,看看我們在ASP時代常用的手段:
(""+Eval("Title")).Length<=20?(""+Eval("Title")):(""+Eval("Title")).Substring(0,17)+"…"
嗯,我的表達有些糟糕,其實我是想說明一種方法,避免判斷null,又能避免ToString的,那就是""+obj
然后就有同學(xué)不同意,覺得這個用法很不好,并且obj不是String時有null異常,并且性能也不好……
我們來一個測試
這個說明,obj不是String時,并沒有null異常。
我們看看后面那個的IL
實際上,編譯器處理過了,類似:String.Concat(obj),注意了,這里是一個Object參數(shù)的靜態(tài)方法,不是我們常用的兩個參數(shù)那個
再看看這個神秘的String.Concat(Object)
哦,轉(zhuǎn)了一圈,還是回來了!
結(jié)果表明,""+obj跟obj==null?"":obj.ToString()是完全一樣的!
我不相信神話,我只相信汗水!我不相信命運,我只相信雙手!


![u7{{jb]%]x]n`k~8k~nhm}3 u7{{jb]%]x]n`k~8k~nhm}3](https://images.cnblogs.com/cnblogs_com/nnhy/201104/201104181317592792.jpg)
![dua~isaw2t9m{h48b(%pc]x dua~isaw2t9m{h48b(%pc]x](https://images.cnblogs.com/cnblogs_com/nnhy/201104/201104181317591363.jpg)

浙公網(wǎng)安備 33010602011771號