求长度的另一种方法(""+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异常,并且性能也不好……

 

    我们来一个测试

`13a~d_[njq[ndvma`ir{ua  u7{​{jb]%]x]n`k~8k~nhm}3

这个说明,obj不是String时,并没有null异常。

 

    我们看看后面那个的IL

dua~isaw2t9m{h48b(%pc]x

 

 

实际上,编译器处理过了,类似:String.Concat(obj),注意了,这里是一个Object参数的静态方法,不是我们常用的两个参数那个

 

    再看看这个神秘的String.Concat(Object)

vo{6qvpsk1f19~}y(e{vehl

哦,转了一圈,还是回来了!

 

结果表明,""+objobj==null?"":obj.ToString()是完全一样的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值