【发布时间】:2020-04-09 13:53:12
【问题描述】:
我开始学习 C# 并且刚刚开始使用 ?? 运算符,但对时间有点困惑。以下面的代码为例:
string x = null;
string y = null;
string v = null;
var watch = System.Diagnostics.Stopwatch.StartNew();
if (string.IsNullOrEmpty(x ?? y ?? v ?? y ?? v))
{
}
watch.Stop();
var elapsedMs = watch.ElapsedTicks;
Console.WriteLine(elapsedMs.ToString());
watch.Restart();
if (string.IsNullOrEmpty(x) || string.IsNullOrEmpty(y) || string.IsNullOrEmpty(v) || string.IsNullOrEmpty(y) || string.IsNullOrEmpty(v))
{
}
var elapsedMs2 = watch.ElapsedTicks;
Console.WriteLine(elapsedMs2.ToString());
我得到的结果是第一个 if 语句大约需要 100 个滴答声,而第二个通常大约 3 个。我的印象是这两个在时间上相似,或者第二个 if 语句与 ||需要更长的时间。
显然我在这里遗漏了一些东西。我认为在第一个 x 被评估为 null 之后就可以了,其余的都不会被评估。有人能解释我在这里做错了什么吗?
【问题讨论】:
标签: c# timing null-coalescing-operator