【发布时间】:2017-02-23 13:21:19
【问题描述】:
我们应该在将变量设置为null之前检查它是否为null吗?
if (MyBills != null)
{
MyBills = null;
}
例如,在Java related question 中,性能影响很小。 这是C#中的情况吗?其他影响?
测试
我创建了以下代码进行测试:
var watch = System.Diagnostics.Stopwatch.StartNew();
int iterations = int.MaxValue;
List<int> myBills= null;
for (var i = 0; i < iterations; i++)
{
if (myBills!= null)
{
myBills = null;
}
}
watch.Stop();
var elapsedMs = watch.ElapsedMilliseconds;
Console.WriteLine(elapsedMs);
在有和没有if (myList != null) 的rextester 上运行它,结果如下:
With check Without check
988 941
938 1021
953 987
998 973
1004 1031
Average
976.2 990.6
因此,即使在非受控环境中对其进行测试,性能影响也无关紧要。
【问题讨论】:
-
当然不,为什么?
-
你所谓的variable可能是一个带有setter的属性,你不想运行哪些代码,那么你就这样做。
-
“我们应该检查...” 仅当您想处理这种情况时,f.e.记录它
-
@MegaTron,确切地说。这就是问题所在。我会很感激downvoters cmets。
-
@MarioLevrero 在您完成您的测试后,我用我的测试编辑了我的答案,这很好!我想在此基础上可能值得保留它。