【问题标题】:does, myval = (someconditon) ? someVal : myval get optimized to not set the value in case it's false确实,myval = (someconditon) 吗? someVal : myval 被优化为不设置值,以防它为假
【发布时间】:2010-10-07 08:57:58
【问题描述】:
CPath = (CPath == null) ? Request.Path : CPath;

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

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

【问题讨论】:

  • 您可以使用空合并运算符:CPath = CPath ??请求路径;

标签: c# optimization compiler-construction clr


【解决方案1】:

好吧,我个人会这样写:

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

为了更清楚。另一种选择(如其他地方所述)是

CPath = CPath ?? Request.Path;

但是你为什么要关心是否有额外的任务呢?您真的认为这会对性能造成重大影响吗?

请注意,如果CPath 是一个字段而不是一个局部变量,它可能会产生影响 - 因为CPath 的值可能会在第一次检查和第二次评估之间发生变化,并且在评估和评估之间再次发生变化。任务。这是否会被注意到取决于缓存等,但它并不像最初看起来那么简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-23
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多