首页 新闻 会员 周边

C# 隐式转化的疑问

0
悬赏园豆:10 [已解决问题] 解决于 2018-04-21 09:41

遇到这么一行代码

public static int ToInt32(this object obj, int defaultValue = 0)
 {
       return obj?.ToString().ToInt32() ?? defaultValue;
  }

问题在于obj 后边的一个?是干嘛的,怎么用?

C#
Bluto的主页 Bluto | 菜鸟二级 | 园豆:317
提问于:2018-04-20 09:53
< >
分享
最佳答案
0

obj == null ? null : obj.ToString().ToInt32() ?? defaultValue

收获园豆:5
BUTTERAPPLE | 老鸟四级 |园豆:3190 | 2018-04-20 10:02

??expands to

(obj?.ToString().ToInt32()) != null ? (obj?.ToString().ToInt32()) : defaultValue
BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2018-04-20 10:05
其他回答(3)
0

obj也可能为null

obj?使得obj为null的时候不报错

收获园豆:3
猝不及防 | 园豆:2781 (老鸟四级) | 2018-04-20 10:06
0

C#的语法糖

https://www.cnblogs.com/cyit/p/6252923.html

收获园豆:2
Norton.Li | 园豆:220 (菜鸟二级) | 2018-04-20 15:20
0

楼上正解,obj?可以为null 例如 int为值类型不能为null int?可以为null~

御风飞舞 | 园豆:410 (菜鸟二级) | 2018-04-24 10:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册