C#中双问号(??)语法 |
您所在的位置:网站首页 › c语音问号 › C#中双问号(??)语法 |
双问号(??)是一个单元运算符,其左右两边数据类型必须是相同类型或能隐形转换类型的。意思是,首先检测左边的值,若为Null,那么整个表达式取值为右侧的值,否则为左侧的值。 例如:string s = null; Console.Write(s ?? "abc");。将打印出"abc"。 例如string s = "a";Console.Write(s ?? "abc");将打印出"a"。
下面将对项目中的一些实例进行详细的分析并改进代码:
示例一:。 这个是在数据绑定控件中很常见的绑定数据的代码,错误也很明显,当JBQK_DXXL为null时,将报NullReferenceException异常。若不用双问号(??)的话,修改后的代码将类似于
而使用双问号(??)后,代码将如下:
示例二:entity.ZXX.Contains("高中") 错误同样明显,entity.ZXX为空,报NullReferenceException异常。 不用双问号(??)的话,需要先检测空,if(entity.ZXX!=null) 而使用双问号(??)代码如下: (entity.ZXX ?? string.Empty).Contains(item.Text)
示例三:赋予默认值 在给一个变量赋值的时候,可以用双问号(??)来起到设置默认值的作用。 string s = entity ?? string.Empty; 总结下来,就是省去了if(XXX==null)的判断,特别是在数据控件中绑定数据时,由于不能写语句,只能写表达式,更加发挥出了双问号(??)的作用。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |