求长度的另一种方法(""+obj).Length
ASP.Net页面绑定时,标题超过20则省略,常规做法:
Eval("Title")==null?"":(Eval("Title").ToString().Length<=20?Eval("Title").ToString():Eval("Title").ToString().Substring(0,17)+"…")
我先说结果,看看我们在ASP时代常用的手段:
(""+Eval("Title")).Length<=20?(""+Eval("Title")):(""+Eval("Title")).Substring(0,17)+"…"
嗯,我的表达有些糟糕,其实我是想说明一种方法,避免判断null,又能避免ToString的,那就是""+obj
然后就有同学不同意,觉得这个用法很不好,并且obj不是String时有null异常,并且性能也不好……
我们来一个测试
这个说明,obj不是String时,并没有null异常。
我们看看后面那个的IL
实际上,编译器处理过了,类似:String.Concat(obj),注意了,这里是一个Object参数的静态方法,不是我们常用的两个参数那个
再看看这个神秘的String.Concat(Object)
哦,转了一圈,还是回来了!
结果表明,""+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)

浙公网安备 33010602011771号