use*_*677 4 c# null nullable operators lifted-operators
请考虑以下陈述:
int? v1 = null;
int? v2 = 5 * v1;
Run Code Online (Sandbox Code Playgroud)
有什么价值 v2
?(null
或空字符串?)
如何防止编译器将其标记为无效操作?我是否需要遵循自定义异常处理?
Meh*_*ari 19
是的null
.
C#语言规范3.0(第7.2.7节:提升运算符)
对于二元运算符
+
-
*
/
%
&
|
^
<<
>>
:如果操作数和结果类型都是非可空值类型,则存在提升形式的运算符.通过向
?
每个操作数和结果类型添加单个修饰符来构造提升形式.如果一个或两个操作数都是提升的运算符,则产生一个null
值null
(该类型的&
和|
运算符除外bool?
,如第7.10.3节所述).否则,提升的运算符解包操作数,应用基础运算符,并包装结果.
如何防止编译器将其标记为无效操作?我是否需要遵循自定义异常处理?
这不是无效的操作.它不会抛出异常,因此在这种情况下您不需要处理异常.
tva*_*son 11
如果希望编译器阻止该操作,请使第二个变量不可为空.然后你将被迫写:
int v2 = 5 * v1.Value;
Run Code Online (Sandbox Code Playgroud)
如果v1为null,这将在运行时抛出异常.
归档时间: |
|
查看次数: |
669 次 |
最近记录: |