gpt4 book ai didi

c# - 空条件运算符仅计算一次

转载 作者:行者123 更新时间:2023-11-30 23:23:12 24 4
gpt4 key购买 nike

我正在阅读 C# 6.0 中引入的空条件运算符,但我没有完全理解它。

来自 https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6

int? first = customers?[0].Orders.Count();

这个例子本质上等同于:

int? first = (customers != null) ? customers[0].Orders.Count() : null;

除了客户只被评估一次。

有人可以详细说明“评估一次”的经文(我假设)评估两次吗?

最佳答案

这里有一个更好的等价于你的第一个陈述

var temp = customers;
int? first;
if(temp != null)
{
first = temp[0].Orders.Count();
}
else
{
first = null;
}

变量customers 只被“触摸”一次。当 customers 是在 get 中执行某些操作的属性或者是一个函数时,这一点更为重要。

private int accessCount = 0;
private Customers[] _customers;
private Customers[] customers
{
get
{
accessCount++;
return _customers;
}
set
{
_customers = value;
}
}

在您的第二个示例中,customers 属性必须被“触摸”两次,一次用于空值检查,一次用于索引器,为 accessCount 提供 的值>2

关于c# - 空条件运算符仅计算一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38471403/

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