【发布时间】:2014-02-27 08:42:47
【问题描述】:
我不太清楚如何表达这个问题,但场景如下:
假设我有以下课程:
public class SampleClass
{
public int Number { get; set; }
}
我知道你可以空合并包含的类:
SampleClass newSampleClass = possibleNullSampleClass ?? notNullSampleClass;
有没有办法对属性执行某种空合并,所以我不必这样做:
int? num = sampleClass != null ? new int?(sampleClass.Number) : 5;
似乎有类似??? 运算符来执行此检查非常有用,所以我可以这样做:
int? num = sampleClass.Number ??? 5;
在 C# 中有类似的可能吗?
【问题讨论】:
-
这种操作有名称或术语吗?是否计划用于任何未来版本的 C#?拥有它似乎非常好。
-
这通常被称为“存在运算符”,在 Coffeescript 和少数其他语言中都可以找到。它通常表示为
?.例如SampleClass?.Number -
一个相关的概念也是空对象模式。例如,在 Objective-C 中,您可以简单地编写 sampleClass.Number 的等价物,它不会抛出异常——您会得到一个确定的值。
-
虽然我不确定 Objective-C 与空对象模式有什么关系,但我认为它是比以下答案中的空值检查更好的解决方案。
标签: c# syntax null-coalescing-operator