Что “??” оператор для? [дубликат]

Я полагаю, что в этой части кода есть проблема

then(axios.spread((adm) => {

    let admissData = adm.data.d.results;
    ///
    let aComp = new admComponent(admData);
        aComp.loadAdmData(admData);

}))

. Попробуйте отладить их:

  1. Что здесь admData.
  2. Вывести admissData на консоль
  3. Формат JSON admissData такой же, как и для локальных данных

Редактировать 1:

  1. Если ключ Значения отличаются, тогда, возможно, у вас возникли проблемы при чтении данных здесь

            return {
                "Ct": val.Ct,
                "Status": val.AdmStatus,
                "Classification": val.Classification
            }
    
  2. Также напечатайте admText, чтобы увидеть, правильно ли сформирован Json

  3. Можете ли вы добавление обоих JSON может помочь в отладке
31
задан Community 23 May 2017 в 12:18
поделиться

12 ответов

Он называется «оператором нулевого слияния» и работает примерно так:

Вместо выполнения:

int? number = null;
int result = number == null ? 0 : number;

Теперь вы можете просто сделать:

int result = number ?? 0;
34
ответ дан 27 November 2019 в 21:23
поделиться

Это оператор объединения. По сути, это сокращение для следующей

x ?? new Student();
x != null ? x : new Student();

документации MSDN об операторе

12
ответ дан 27 November 2019 в 21:23
поделиться

Это новый оператор Null Coalesce.

The ?? оператор возвращает левый операнд, если он не равен нулю, или возвращает правый операнд.

Вы можете прочитать об этом здесь:

оператор возвращает левый операнд, если он не равен нулю, или возвращает правый операнд.

Вы можете прочитать об этом здесь:

оператор возвращает левый операнд, если он не равен нулю, или возвращает правый операнд.

Вы можете прочитать об этом здесь: http://msdn.microsoft.com/en-us/library/ms173224 (VS.80) .aspx

8
ответ дан 27 November 2019 в 21:23
поделиться

это оператор объединения он вернет другое значение, если первое значение будет нулевым

string value1 = null;
string value2 = "other";

string value3 = value1 ?? value2; // assigns "other" to value 3
7
ответ дан 27 November 2019 в 21:23
поделиться

Одно из моих любимых применений оператора объединения нулей - избегать операторов if в моем коде (я думаю, что операторы уродливы и просто загромождают вещи в большинстве случаев). Например, возьмем типичный сценарий, в котором можно выбрать загрузку чего-либо из кэша, если он доступен, в противном случае загрузить из базы данных и заполнить кэш.

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;

    if (data == null) {
        data = DAL.GetData(some parameters...);
        HttpRuntime.Cache.Add("key", data, ....);
    }

    return data;
}

Для меня это ужасный код. Я могу быть немного анальным, но почему бы не рефакторировать это вместо этого?

private SomeData GetDataAndCache() {
    var data = DAL.GetData(some parameters...);
    HttpRuntime.Cache.Add("key", data, ....);
    return data;
}

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;
    return data ?? GetDataAndCache();
}

Это более близко следует SRP и является более чистым и легче читаемым, IMO. Каждая из этих функций выполняет ровно одну четко идентифицируемую функцию.

4
ответ дан 27 November 2019 в 21:23
поделиться

Возвращает первое ненулевое значение. Handy.

2
ответ дан 27 November 2019 в 21:23
поделиться

?? Нулевой коалесцирующий оператор

int? является обнуляемым int, что означает, что он может иметь значения нормальных int и null. Прочитайте этот для деталей.

2
ответ дан 27 November 2019 в 21:23
поделиться

Это оператор слияния . Он используется с обнуляемыми типами (помимо прочего, извините:)

1
ответ дан 27 November 2019 в 21:23
поделиться

Это сокращение для:

Text = (category == null ? "Home" : category);
8
ответ дан 27 November 2019 в 21:23
поделиться

он проверяет, является ли категория нулевой - в этом случае нулевое значение заменяется на «Home».

5
ответ дан 27 November 2019 в 21:23
поделиться

, если категория пуста, текст станет «Домой»

4
ответ дан 27 November 2019 в 21:23
поделиться

Это оператор объединения с нулевым значением . Он был введен в C # 2.

Результат выражения a ?? b равно a , если это не NULL, или b в противном случае. b не вычисляется, если в этом нет необходимости.

Две приятные вещи:

  • Общий тип выражения - тип второго операнда, что важно при использовании типов значений, допускающих значение NULL:

     int? возможно = ...;
    int определенно = возможно ?? 10;
    

    (Обратите внимание, что вы не можете использовать тип значения, не допускающий значения NULL в качестве первого операнда - это будет бессмысленно.)

  • Правила ассоциативности означают, что вы можете очень легко связать это. Например:

     строковый адрес = адрес доставки ?? Адрес для выставления счета ?? Контактный адрес;
    

Это будет использовать первое ненулевое значение из адреса доставки, выставления счета или контактного адреса.

51
ответ дан 27 November 2019 в 21:23
поделиться
Другие вопросы по тегам:

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