这个问题已经有一个答案在这里:

我想知道关于 ?? 迹象 C# 代码。它是什么用的?我怎么能用它呢?

怎么样 int??它是一个可空int?

参见:

??空结合运营商—>什么的凝聚意思?

有帮助吗?

解决方案

这就是所谓的"null凝聚操作者",并作品像这样的东西:

而不是做:

int? number = null;
int result = number == null ? 0 : number;

你可以现在就这样做:

int result = number ?? 0;

其他提示

它是的 空结合运营商.它介绍了在C#2.

其结果的表达 a ?? ba 如果这不是空的,或者 b 否则。 b 不行评价,除非它是必要的。

两个美好的东西:

  • 总体类型的表达是第二个操作数,这是重要的,当你使用可空值的类型:

    int? maybe = ...;
    int definitely = maybe ?? 10;
    

    (请注意,不能使用非空值的类型作为第一个操作数的-那将是 毫无意义的。)

  • 关联性规则意味着你可以把这真的很容易。例如:

    string address = shippingAddress ?? billingAddress ?? contactAddress;
    

这将使第一个非null价值的运费、记帐或联系地址。

这是联合经营者。它基本上是简写为如下

x ?? new Student();
x != null ? x : new Student();

MSDN文件在操作上

这是新的空结合运营商。

??操作者返回的左手操作的,如果它不是空,否则返回的权利的操作数。

你可以在这里阅读有关:http://msdn.microsoft.com/en-us/library/ms173224(VS。80).aspx

这是一个快捷方式为:

Text = (category == null ? "Home" : category);

这是联合经营者。它将返回的另一个价值,如果第一个值是空的

string value1 = null;
string value2 = "other";

string value3 = value1 ?? value2; // assigns "other" to value 3

它检查,如果分类是空的-在这种情况下的空值替换为"家庭"。

一个我最喜欢的使用对空结合运营商是为了避免如果发言,在我的代码(我认为如果声明是丑陋的,只是混乱的事物了大部分时间)。例如,一个典型的情况,其中一个可能选择负荷的东西从高速缓冲,如果可用,否则从数据库和填充高速缓存。

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;

    if (data == null) {
        data = DAL.GetData(some parameters...);
        HttpRuntime.Cache.Add("key", data, ....);
    }

    return data;
}

对我来说,那是丑陋的代码。我可能有点肛门,但为什么不进行重构,它为此而不是?

private SomeData GetDataAndCache() {
    var data = DAL.GetData(some parameters...);
    HttpRuntime.Cache.Add("key", data, ....);
    return data;
}

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;
    return data ?? GetDataAndCache();
}

它更紧密地下资源计划和更清洁的和更易于阅读,海事组织。功能完全执行的一个可明确识别功能的每一个。

如果分类是null,文本将成为"家庭"

返回的第一个非空值。方便。

??空结合运营商

int?是一个可空int,这意味着它可以具有的价值观的一个正常的int和空。阅读 对于细节。

这就是的 空结合运营商 .它的使用 空类型 (除其他事项外,对不起:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top