gpt4 book ai didi

c# - 问号和点运算符是什么?在 C# 6.0 中是什么意思?

转载 作者:IT王子 更新时间:2023-10-29 03:28:21 29 4
gpt4 key购买 nike

在 VS2015 预览版中使用 C# 6.0,我们有一个新的运算符 ?.,可以像这样使用:

public class A {
string PropertyOfA { get; set; }
}

...

var a = new A();
var foo = "bar";
if(a?.PropertyOfA != foo) {
//somecode
}

它到底有什么作用?

最佳答案

这是null conditional运算符(operator)。它基本上意味着:

“评估第一个操作数;如果它为空,则停止,结果为空。否则,评估第二个操作数(作为第一个操作数的成员访问)。”

在您的示例中,要点是如果 anull,则 a?.PropertyOfA 的计算结果为 null 而不是抛出异常 - 然后它将 null 引用与 foo 进行比较(使用字符串的 == 重载),找到它们'不相等,执行将进入 if 语句的主体。

换句话说,它是这样的:

string bar = (a == null ? null : a.PropertyOfA);
if (bar != foo)
{
...
}

... 除了 a 只计算一次。

请注意,这也可以更改表达式的类型。例如,考虑 FileInfo.Length .这是 long 类型的属性,但如果将它与 null 条件运算符一起使用,最终会得到 long? 类型的表达式:

FileInfo fi = ...; // fi could be null
long? length = fi?.Length; // If fi is null, length will be null

关于c# - 问号和点运算符是什么?在 C# 6.0 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28352072/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com