`
modabobo
  • 浏览: 509660 次
文章分类
社区版块
存档分类
最新评论

在条件运算符中使用可空类型出现的问题?

 
阅读更多

int? i = null; //这样赋值没问题,但是

int? i = (1==1)? null : 3; //这样就提示"无法确定条件表达式的类型,因为“<null>”和“int”之间没有隐式转换”

请问这是什么原因呢?

解决方案:

int? i = (1==1)? (int?)null : 3;

原因:对于你的赋值语句,C#的处理方式是计算出右边的值,然后复制给左边。在计算右边的值时,不受"="号左侧的任何影响。因此先考虑(1 == 1) ? null : 3; 这个三元运算表达式。在计算这个表达式时,要首先确定它的(结果)类型。它的结果可能有2个:null 和 3,从这2个可能的结果中无法推断出结果的类型。因为3是Int32,而null无法转换为Int32类型。当改成(1==1) ? (int?)null : 3之后,它的结果可能有2个,一个是 int?,一个是int,由于int可以隐式转换为int?,而int?无法隐式转换为int,因此可以推断出结果是int?类型。

http://q.cnblogs.com/q/40895/

分享到:
评论

相关推荐

    C 语言编程常见问题解答.chm

    16.2 函数参数类型必须在函数参数表中或紧跟其后的部分中说明吗? 16.3 程序中必须包含main()的原型吗? 16.4 main()应该总是返回一个值吗? 第17章 用户界面——屏幕和键盘 17.1 为什么直到程序结束时才...

    C语言编程要点

    17.8. 怎样在程序中使用功能键和箭头键? 227 17.9. 怎样防止用户向一个内存区域中输人过多的字符? 229 17.10. 怎样用0补齐一个数字? 230 17.11. 怎样才能打印出美元一美分值? 230 17.12. 怎样按科学记数法打印数字? ...

    C语言FAQ 常见问题列表

    o 2.1 我如何决定使用那种整数类型? o 2.2 64 位机上的 64 位类型是什么样的? o 2.3 怎样定义和声明全局变量和函数最好? o 2.4 extern 在函数声明中是什么意思? o 2.5 关键字 auto 到底有什么用途? o 2.6...

    c0扩充编译器,实现三种优化,北航计算机

    C0文法 加法运算符> ::= +|- 乘法运算符> ::= * |/ 关系运算符> ::= ||>|>=|!=|== 字符> ::= _|a|...|z|A|...|Z ...注:返回值为void类型的子函数不允许出现在表达式中

    扩充C0编译器要求 北航计算机用

    C0文法 加法运算符> ::= +|- 乘法运算符> ::= * |/ 关系运算符> ::= ||>|>=|!=|== 字符> ::= _|a|...|z|A|...|Z ...注:返回值为void类型的子函数不允许出现在表达式中

    计算机二级c语言资料.zip

    空类型(void) 运算符与表达式 算术运算符:加(+)、减(-)、乘(*)、除(/)、取模(%) 关系运算符:大于(&gt;)、小于(&lt;)、等于(==)、不等于(!=)、大于等于(&gt;=)、小于等于() 逻辑运算符:逻辑与(&&...

    C语言程序设计标准教程

     在第一课中,我们已经看到程序中使用的各种变量都应预先加以说明,即先说明,后使用。对变量的说明可以包括三个方面: ?数据类型 ?存储类型 ?作用域  在本课中,我们只介绍数据类型说明。其它说明在以后各章中...

    C#本质论(第3版)

    3.5.4 条件运算符 3.5.5 空接合运算符 3.6 按位运算符 3.6.1 移位运算符 3.6.2 按位运算符 3.6.3 按位赋值运算符 3.6.4 按位取反运算符 3.7 控制流语句 3.7.1 whi.1 e和do/while循环 3.7.2 for循环 ...

    C#语言规范(4.0版本)

    7.14 条件运算符 202 7.15 匿名函数表达式 203 7.15.1 匿名函数签名 204 7.15.2 匿名函数体 205 7.15.3 重载决策 205 7.15.4 匿名函数与动态绑定 206 7.15.5 外层变量 206 7.15.5.1 捕获的外层变量 206 7.15.5.2 ...

    微软C#语言规范,C#语言教程中文版

    7.14 条件运算符 202 7.15 匿名函数表达式 203 7.15.1 匿名函数签名 204 7.15.2 匿名函数体 205 7.15.3 重载决策 205 7.15.4 匿名函数与动态绑定 206 7.15.5 外层变量 206 7.15.5.1 捕获的外层变量 206 7.15.5.2 ...

    python中的ch表示什么-Python基础教程Ch5-条件、循环和其他语句.pdf

    当函数或者⽅法返回元组(或者其他序列或可迭代对象) 时,这个特性特别有⽤ 5.3语句块:缩排的快乐 Python中冒号⽤来表⽰语句块的开始,缩进推荐使⽤4个空格 5.4条件和条件语句 elif是else if的缩写 包含⼀个空格的...

    C#语言规范4.0

    7.14 条件运算符 202 7.15 匿名函数表达式 203 7.15.1 匿名函数签名 204 7.15.2 匿名函数体 205 7.15.3 重载决策 205 7.15.4 匿名函数与动态绑定 206 7.15.5 外层变量 206 7.15.5.1 捕获的外层变量 206 7.15.5.2 ...

    C#语言规范(2.0,3.0,4.0合集)

    7.14 条件运算符 202 7.15 匿名函数表达式 203 7.15.1 匿名函数签名 204 7.15.2 匿名函数体 205 7.15.3 重载决策 205 7.15.4 匿名函数与动态绑定 206 7.15.5 外层变量 206 7.15.5.1 捕获的外层变量 206 7.15.5.2 ...

    C#_语言规范_4.0_中文版

    7.14 条件运算符 202 7.15 匿名函数表达式 203 7.15.1 匿名函数签名 204 7.15.2 匿名函数体 205 7.15.3 重载决策 205 7.15.4 匿名函数与动态绑定 206 7.15.5 外层变量 206 7.15.5.1 捕获的外层变量 206 7.15.5.2 ...

Global site tag (gtag.js) - Google Analytics