前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >求长度的另一种方法(""+obj).Length

求长度的另一种方法(""+obj).Length

作者头像
大石头
发布2018-01-15 17:27:04
7630
发布2018-01-15 17:27:04
举报
文章被收录于专栏:智能大石头智能大石头

  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
`13a~d_[njq[ndvma`ir{ua
u7{{jb]%]x]n`k~8k~nhm}3
u7{{jb]%]x]n`k~8k~nhm}3

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

    我们看看后面那个的IL

dua~isaw2t9m{h48b(%pc]x
dua~isaw2t9m{h48b(%pc]x

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

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

vo{6qvpsk1f19~}y(e{vehl
vo{6qvpsk1f19~}y(e{vehl

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-04-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档