В C++ и C# несколько проверок условия, выполненных в предопределенной или случайной последовательности?

Просто установите свойство (в данном случае statsd) для нового объекта (new StatsD()):

function Metrics(params) {
    //Initialize params
    this.statsd = new StatsD();
}

Вы также можете прикрепить StatsD к prototype: [117 ]

Metrics.prototype.statsd = StatsD();
7
задан User 7 May 2009 в 21:51
поделиться

4 ответа

Короткий ответ слева направо с оценкой короткого замыкания. Порядок предсказуем.

// perfectly legal and quite a standard way to express in C++/C#
if( x != null && x.Count > 0 ) ...

Некоторые языки оценивают все в условии до перехода (например, VB6).

// will fail in VB6 if x is Nothing. 
If x Is Not Nothing And x.Count > 0 Then ...

Ссылка: MSDN Операторы C # и их порядок или приоритет.

14
ответ дан 6 December 2019 в 12:54
поделиться

Они определены для оценки слева направо, и , чтобы прекратить оценку, когда один из них оценивается как ложь. Это верно как для C ++, так и для C #.

2
ответ дан 6 December 2019 в 12:54
поделиться

Я не думаю, что есть и не было другого пути. Это было бы похоже на то, что компилятор решает без причины запускать операторы вне очереди. :) Теперь в некоторых языках (например, VB.NET) есть разные логические операторы для замыкания, а не для замыкания. Но порядок всегда четко определяется во время компиляции.

Вот приоритет оператора из спецификации языка C #. Из спецификации ...

За исключением операторов присваивания, все бинарные операторы левоассоциативный, то есть операции выполняются слева направо право. Например, x + y + z равно вычисляется как (x + y) + z.

0
ответ дан 6 December 2019 в 12:54
поделиться

Они должны выполняться слева направо. Это позволяет работать с оценкой короткого замыкания.

См. статью Википедии для получения дополнительной информации.

0
ответ дан 6 December 2019 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: