C# 可空值类型上的提升运算符是否使用短路?

C# 可空值类型上的提升运算符是否使用短路?,c#,language-lawyer,short-circuiting,lifted-operators,C#,Language Lawyer,Short Circuiting,Lifted Operators,我想知道这样的代码是否应该执行GetAnotherValue() int?x1=零; var check=x1如果在GetAnotherValue()中放置断点会发生什么?看看编译器做了什么:它确实执行了该方法。我认为那是不幸的。这意味着我们需要编写丑陋的代码,比如x1.HasValue&&x1.Value,我想不管调用什么都是有意义的。如果两个参数都不是可为null的值类型,那么它也将执行该方法。为什么nullables应该有任何不同。如果在GetAnotherValue()中放置断点会发生什

我想知道这样的代码是否应该执行
GetAnotherValue()

int?x1=零;

var check=x1如果在
GetAnotherValue()
中放置断点会发生什么?看看编译器做了什么:它确实执行了该方法。我认为那是不幸的。这意味着我们需要编写丑陋的代码,比如
x1.HasValue&&x1.Value,我想不管调用什么都是有意义的。如果两个参数都不是可为null的值类型,那么它也将执行该方法。为什么nullables应该有任何不同。如果在
GetAnotherValue()
中放置断点会发生什么?看看编译器的功能:它确实执行该方法。我认为那是不幸的。这意味着我们需要编写丑陋的代码,比如
x1.HasValue&&x1.Value,我想不管调用什么都是有意义的。如果两个参数都不是可为null的值类型,那么它也将执行该方法。为什么nullables应该有所不同。
int? x1 = null;
var check = x1 <= GetAnotherValue();