是吗,myval =(某些条件)? someVal :myval 得到优化,不会设置该值,以防它为 false

问题描述 投票:0回答:1
CPath = (CPath == null) ? Request.Path : CPath;

首先我希望 CLR 让我做? Request.Path,不要打扰我创建一个:

但我问它会优化它吗?或者仍然分配。

c# optimization clr
1个回答
5
投票

嗯,我个人会写成:

if (CPath == null)
{
    CPath = Request.Path;
}

为了更清楚。另一种选择(如其他地方提到的)是

CPath = CPath ?? Request.Path;

但是你为什么要关心是否有额外的作业呢?您真的认为这会对性能产生重大影响吗?

请注意,如果

CPath
是字段而不是局部变量,则可能会产生影响 - 因为
CPath
的值可能会在第一次检查和第二次评估之间发生变化,以及在评估和赋值之间再次发生变化。是否会被注意到取决于缓存等,但它并不像乍一看那么简单。

© www.soinside.com 2019 - 2024. All rights reserved.