делает, myval = (someconditon)? someVal: myval оптимизирован, чтобы не устанавливать значение в случае, если оно ложно - PullRequest
1 голос
/ 07 октября 2010
CPath = (CPath == null) ? Request.Path : CPath;

Прежде всего, я бы хотел, чтобы CLR позволил мне сделать?Request.Path и не мешайте мне создавать:

Но я спрашиваю, будет ли это оптимизировано?Или еще назначь.

1 Ответ

5 голосов
/ 07 октября 2010

Ну, я бы лично написал это как:

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

чтобы было понятнее. Альтернатива (как упоминалось в другом месте):

CPath = CPath ?? Request.Path;

Но почему вас волнует, если есть дополнительное задание? Вы действительно думаете, что это будет значительный удар по производительности?

Обратите внимание, что если CPath является полем, а не локальной переменной, это может потенциально иметь значение - потому что значение CPath может измениться между первой проверкой и второй оценкой, и снова между оценкой и назначение. Будет ли это замечено, зависит от кэширования и т. Д., Но это не так просто, как может показаться на первый взгляд.

...