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

简介: ASP.Net页面绑定时,标题超过20则省略,常规做法: Eval("Title")==null?"":(Eval("Title").ToString().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()是完全一样的!

我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
相关文章
|
4月前
ES6的Array.from({length:N})方法创建长度为N的undefined数组,等价于 [...Array(N)]
ES6的Array.from({length:N})方法创建长度为N的undefined数组,等价于 [...Array(N)]
|
4月前
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
|
8月前
|
JavaScript
ES6对String字符串、Array数组、Number数字、Object对象 类型做了哪些升级优化
ES6对String字符串、Array数组、Number数字、Object对象 类型做了哪些升级优化
|
10月前
|
JavaScript API
Array.apply(null,{length: 99}) 逻辑解析
Array.apply(null,{length: 99}) 逻辑解析
54 0
【C/C++ strlen(str)和str.length()和str.size()的区别】
strlenQ(str)和str.length()和str.size()都可以求字符串长度,返回字符串中字符的长度,不包括0'。其中str.length()和str.size()是同义词,返回同样的值。
【C/C++ strlen(str)和str.length()和str.size()的区别】
|
安全
string null和“”的区别 str == null; "".equals(str); str.length 0; str.isEmpty();的区别
string null和“”的区别 str == null; "".equals(str); str.length 0; str.isEmpty();的区别
96 0
C++中string类 size() length()函数的返回值问题
C++中string类 size() length()函数的返回值问题
131 0
C++中string类 size() length()函数的返回值问题
|
JavaScript 前端开发 搜索推荐
19、Array 对象
Array是 JavaScript 的原生对象,同时也是一个构造函数,可以用它生成新的数组。
101 0
|
机器学习/深度学习 C语言
【C 语言】数组 ( 指针退化验证 | 计算数组大小 | #define LENGTH(array) (sizeof(array) / sizeof(*array)) )
【C 语言】数组 ( 指针退化验证 | 计算数组大小 | #define LENGTH(array) (sizeof(array) / sizeof(*array)) )
172 0
【C 语言】数组 ( 指针退化验证 | 计算数组大小 | #define LENGTH(array) (sizeof(array) / sizeof(*array)) )
|
索引
Srting&Array方法总结
String对象 //.length; => 字符串的长度 // .charAt(索引); => 返回对应字符 超出为空 // .
977 0