CPath = (CPath == null) ? Request.Path : CPath;
首先我希望 CLR 让我做? Request.Path,不要打扰我创建一个:
但我问它会优化它吗?或者仍然分配。
嗯,我个人会写成:
if (CPath == null)
{
CPath = Request.Path;
}
为了更清楚。另一种选择(如其他地方提到的)是
CPath = CPath ?? Request.Path;
但是你为什么要关心是否有额外的作业呢?您真的认为这会对性能产生重大影响吗?
请注意,如果
CPath
是字段而不是局部变量,则可能会产生影响 - 因为 CPath
的值可能会在第一次检查和第二次评估之间发生变化,以及在评估和赋值之间再次发生变化。是否会被注意到取决于缓存等,但它并不像乍一看那么简单。