Nullable<T>
当比较的一边为空时,有没有人具体了解C#如何处理与类型的比较?
正如我通过试验编译器所理解的那样,似乎比较总是返回false,但我找不到任何文档来支持它.这是该语言的真正特征(因此我可以依赖它),或者这是一个在未来版本中可能会改变的实现细节?
换句话说,下面的方法是否真的意味着y.HasValue
,并且你能指出一些证明它确实存在的文档吗?
public bool foo(int x, int? y)
{
return x < y;
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 47
当比较的一边为空时,有没有人具体了解C#如何处理与Nullable类型的比较?
是 - C#语言规范,第7.3.7节.在这种情况下,它是一个关系运算符:
对于关系运算
< > <= >=
符,如果操作数类型都是非可空类型并且结果类型是,则存在提升形式的运算符bool
.通过向?
每个操作数类型添加单个修饰符来构造提升形式.false
如果一个或两个操作数为空,则提升的运算符将生成该值.否则,提升的运算符会解包操作数并应用基础运算符来生成bool
结果.
其他运营商也有类似的详细部分.
如果对该语言的某些方面如何工作(以及它是否有保证或特定于实现)存在疑问,那么C#语言规范应该是您的第一个调用端口.
归档时间: |
|
查看次数: |
4740 次 |
最近记录: |