Два вопросительных знака что означает

Что означают два вопросительных знака вместе в C #?

Просмотрите эту строку кода:

Что означают два вопросительных знака, это какой-то тернарный оператор? Сложно поискать в гугле.

18 ответов

Это очень удобно, особенно из-за того, как работает при многократном использовании в выражении. Выражение формы:

Кроме того, если тип d не допускает значения NULL, тип всего выражения также не допускает значения NULL.

Всем спасибо, вот самое краткое объяснение, которое я нашел на сайте MSDN:

Два вопросительных знака что означает. Смотреть фото Два вопросительных знака что означает. Смотреть картинку Два вопросительных знака что означает. Картинка про Два вопросительных знака что означает. Фото Два вопросительных знака что означает

Два вопросительных знака (??) указывают на то, что это оператор объединения.

Оператор объединения возвращает первое значение NON-NULL из цепочки. Вы можете посмотреть это видео на YouTube, которое демонстрирует все на практике.

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

Если вы видите английское значение слияния, оно означает «объединяться вместе». Например, ниже приведен простой код объединения, который объединяет четыре строки в цепочку.

Проще говоря, оператор объединения возвращает первое значение NON-NULL из цепочки.

?? предназначен для предоставления значения для типа, допускающего значение NULL, когда значение равно NULL. Итак, если formAuth имеет значение null, он вернет новый FormsAuthenticationWrapper ().

Это сокращение от тернарного оператора.

Или для тех, кто не занимается тройным:

Ничего опасного в этом нет. На самом деле это красиво. Вы можете добавить значение по умолчанию, если это желательно, например:

Используется для проверки нулевого значения перед выполнением операции доступа к члену (?. ) или индексации (? [). Эти операторы помогают вам писать меньше кода для обработки нулевых проверок, особенно для спуска в структуры данных.

Что более многословно и громоздко.

Только для вашего развлечения (зная, что вы все ребята из C # ;-).

Я думаю, что он зародился в Smalltalk, где он существует уже много лет. Там он определяется как:

В UndefinedObject (он же класс nil):

Существуют как оценочные (?), Так и неоценочные версии (??).
Это часто встречается в методах получения для приватных (экземпляров) переменных с отложенной инициализацией, которые остаются равными нулю до тех пор, пока они действительно не понадобятся.

Некоторые из приведенных здесь примеров получения значений с помощью объединения неэффективны.

Что вам действительно нужно:

Это предотвращает повторное создание объекта каждый раз. Вместо того, чтобы закрытая переменная оставалась нулевой и новый объект создавался при каждом запросе, это гарантирует, что закрытая переменная назначается, если создается новый объект.

Это нулевой оператор объединения, который работает аналогично тернарному оператору.

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

Это нулевой оператор объединения.

Да, почти невозможно найти, если не знаешь, как это называется! 🙂

РЕДАКТИРОВАТЬ: И это классная функция из другого вопроса. Вы можете связать их.

Устаревший нулевой тест:

Используя оператор Null Coalescing, это можно записать:

Который также можно записать с сокращенным синтаксисом:

Некоторым он кажется более читаемым и лаконичным.

Проще говоря, два вопросительных знака называются «оператором объединения», который возвращает первое ненулевое значение из цепочки.

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

Примечание.

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

Источник:

Основа коммуникации Windows, выпущенная Крейгом Макмертри ISBN 0-672-32948-4

Типы значений, допускающие значение NULL

Компилятор предотвратит попытку присвоить значение типа значения, допускающего значение NULL, обычному типу значения следующим образом:

Это не позволяет сделать это, потому что тип значения, допускающий значение NULL, может иметь значение NULL, которое он действительно имел бы в этом случае, и это значение не может быть присвоено обычному типу значения. Хотя компилятор разрешил этот код,

Заключение:

Источник

Что означают два вопросительных знака вместе в C#?

Наткнулся на эту строку кода:

Что означают два вопросительных знака, это какой-то тернарный оператор? Это трудно найти в Google.

18 ответов

который далее расширяется до:

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

Обратите внимание, что вы можете использовать любое их количество последовательно. Следующее утверждение назначит первый не-null Answer# Answer (если все ответы равны null, то Answer равен null):

Кроме того, стоит отметить, что хотя приведенное выше расширение концептуально эквивалентно, результат каждого выражения вычисляется только один раз. Это важно, если, например, выражение является вызовом метода с побочными эффектами. (Спасибо @Joey за то, что указал на это.)

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

Кроме того, если тип d не является нулевым, то тип всего выражения также не является нулевым.

Это коалесцирующий оператор null.

Да, почти невозможно искать, если вы не знаете, как это называется! 🙂

EDIT: и это классная особенность из другого вопроса. Их можно заковать в цепи.

Спасибо всем, вот самое краткое объяснение, которое я нашел на сайте MSDN:

?? существует для того, чтобы предоставить значение для типа nullable, когда это значение равно null. Таким образом, если formsAuth-это null, он вернет новый FormsAuthenticationWrapper().

Два вопросительных знака что означает. Смотреть фото Два вопросительных знака что означает. Смотреть картинку Два вопросительных знака что означает. Картинка про Два вопросительных знака что означает. Фото Два вопросительных знака что означает

Два вопросительных знака (??) указывают на то, что это Коалесцирующий оператор.

Но позвольте мне добавить больше к тому, что говорит видео.

Если вы видите английское значение слова coalescing, то оно говорит “consolidate together”. Например, ниже приведен простой коалесцирующий код, который связывает четыре строки.

Проще говоря, Коалесцирующий оператор возвращает первое значение, не являющееся NULL, из цепочки.

Это короткая рука для тернарного оператора.

Или для тех, кто не делает троичных:

В этом нет ничего опасного. На самом деле, это прекрасно. Вы можете добавить значение по умолчанию, если это желательно, например:

CODE

Как правильно указано в многочисленных ответах, это «null coalescing operator» ( ?? ), говоря о котором, вы также можете проверить его двоюродного брата «Null-conditional Operator» (?. или ? [), который является оператором, который много раз используется в сочетании с ??

Используется для проверки null перед выполнением операции доступа к элементу ( ?. ) или индексации (? [). Эти операторы помогают вам писать меньше кода для обработки проверок null, особенно для спуска в структуры данных.

что более многословно и громоздко.

Я думаю, что он возник в Smalltalk, где он существует уже много лет. Там он определяется как:

в UndefinedObject (он же класс Нила):

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

Некоторые из приведенных здесь примеров получения значений с помощью коалесцирования неэффективны.

То, что вы действительно хотите, это:

Это предотвращает повторное создание объекта каждый раз. Вместо того чтобы частная переменная оставалась null и новый объект создавался при каждом запросе, это гарантирует, что частная переменная будет назначена, если будет создан новый объект.

Примечание:

Я прочитал всю эту тему и многие другие, но не могу найти столь же исчерпывающего ответа, как этот.

Источник:

Windows коммуникационный фонд, выпущенный Крейгом McMurtry ISBN 0-672-32948-4

Типы Значений, Допускающих Обнуление

Компилятор предотвратит попытку присвоить значение типа значения nullable обычному типу значения таким образом:

Это мешает сделать это, потому что тип значения nullable может иметь значение null, которое он фактически имел бы в этом случае, и это значение не может быть присвоено обычному типу значения. Хотя компилятор разрешил бы этот код,

Вывод:

Один правильный способ присвоить значение обнуляемого типа значений для обычного типа значения, чтобы использовать свойство System.Nullable.HasValue чтобы установить, соответствует ли действительное значение t была назначена типом, поддерживающим значение null :

Другой вариант-использовать этот синтаксис:

Это коалесцирующий оператор null, который работает аналогично тернарному оператору.

Еще один интересный момент для этого заключается в том, что» nullable тип может содержать значение или он может быть неопределенным». Поэтому, если вы попытаетесь присвоить нулевой тип значения ненулевому типу значения, вы получите ошибку времени компиляции.

Некоторые находят его более читаемым и лаконичным.

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

Возможный Дубликат : Что означают два вопросительных знака вместе в C#? Я пытаюсь понять, что делает это утверждение: что означает. это сом тип если-условии? string cookieKey = SearchDisplayType.

Возможный Дубликат : Что означают два вопросительных знака вместе в C#? может ли кто-нибудь объяснить этот синтаксис? protected string CompanyProductSeriesId < get < return.

Я познакомился с этим кодом и никак не мог понять, что означают эти два вопросительных знака? определение этой переменной выглядит следующим образом: var featureImageSizeOptional: CGSize? Код.

Источник

Что означают два вопросительных знака вместе в C#?

Наткнулся на эту строку кода:

Что означают два вопросительных знака, это какой-то тернарный оператор? Это трудно найти в Google.

18 ответов

который далее расширяется до:

По-английски это означает: «Если то, что находится слева, не является null, используйте это, в противном случае используйте то, что находится справа.»

Кроме того, стоит отметить, что, хотя приведенное выше расширение концептуально эквивалентно, результат каждого выражения оценивается только один раз. Это важно, если, например, выражение является вызовом метода с побочными эффектами. (Похвала @Joey за то, что он указал на это.)

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

Кроме того, если тип d не является нулевым, тип всего выражения также не является нулевым.

Это оператор коалесцирования null.

Да, почти невозможно найти, если вы не знаете, как это называется! 🙂

EDIT: И это классная особенность из другого вопроса. Вы можете заковать их в цепи.

Спасибо всем, вот самое краткое объяснение, которое я нашел на сайте MSDN:

Два вопросительных знака что означает. Смотреть фото Два вопросительных знака что означает. Смотреть картинку Два вопросительных знака что означает. Картинка про Два вопросительных знака что означает. Фото Два вопросительных знака что означает

Два вопросительных знака (??) указывают на то, что это Коалесцирующий оператор.

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

Если вы видите английское значение слияния, оно говорит “consolidate together”. Например, ниже приведен простой код объединения, который связывает четыре строки.

Простыми словами, оператор объединения возвращает первое значение, ОТЛИЧНОЕ от NULL, из цепочки.

?? предназначен для предоставления значения для типа с нулевым значением, когда значение равно null. Таким образом, если formsAuth равно null, он вернет новый FormsAuthenticationWrapper().

Это короткая рука для тернарного оператора.

Или для тех, кто не делает троичных:

В этом нет ничего опасного. На самом деле, это прекрасно. Вы можете добавить значение по умолчанию, если это желательно, например:

CODE

Как правильно указано в многочисленных ответах, это «null coalescing operator» (??), говоря о котором, вы также можете проверить его двоюродного брата «Null-conditional Operator» ( ?. или ? [), который является оператором, с которым он много раз используется в сочетании ??

Используется для проверки null перед выполнением операции доступа к элементу ( ?. ) или индексации (? [). Эти операторы помогают вам писать меньше кода для обработки проверок null, особенно для нисхождения в структуры данных.

что более многословно и громоздко.

Только для вашего развлечения (зная, что вы все C# парней ;-).

Я думаю, что он возник в Smalltalk, где он существует уже много лет. Он определяется там как:

в UndefinedObject (он же класс nil):

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

Примечание:

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

Источник:

Windows коммуникационный фонд, созданный Крейгом McMurtry ISBN 0-672-32948-4

Типы значений, допускающих обнуление

Компилятор таким образом предотвратит попытку присвоения значения типа значения с нулевым значением обычному типу значения:

Это не позволяет сделать это, потому что тип значения nullable может иметь значение null, которое он фактически имел бы в этом случае, и это значение не может быть присвоено обычному типу значения. Хотя компилятор разрешил бы этот код,

Вывод:

Некоторые из приведенных здесь примеров получения значений с помощью объединения неэффективны.

Чего ты действительно хочешь, так это:

Это предотвращает повторное создание объекта каждый раз. Вместо того, чтобы частная переменная оставалась null и новый объект создавался при каждом запросе, это гарантирует, что частная переменная будет назначена при создании нового объекта.

Используя оператор коалесцирования Null, это можно записать:

который также может быть написан с сокращенным синтаксисом:

Некоторые находят его более читабельным и лаконичным.

Это коалесцирующий оператор null, который работает аналогично троичному оператору.

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

Я познакомился с этим кодом и никак не мог понять, что означают эти два вопросительных знака? определение этой переменной выглядит следующим образом: var featureImageSizeOptional: CGSize? Код.

Возможный Дубликат : Что означают два вопросительных знака вместе в C#? может ли кто-нибудь объяснить этот синтаксис? protected string CompanyProductSeriesId < get < return.

Возможный Дубликат : Что означают два вопросительных знака вместе в C#? Я пытаюсь понять, что делает это утверждение: что означает. это сом тип если-условии? string cookieKey = SearchDisplayType.

Источник

Что означают два вопросительных знака в строке в тройном предложении?

Недавно я видел этот оператор тернарной операции в фрагменте кода Java:

Что означает это утверждение (т.е. как мне читать его как словесное выражение условий true / false ) и какие входные данные должны быть для <> быть возвращенным?

5 ответов

Это просто вложенный тернарный оператор. Понятнее, добавив скобки:

какими должны быть входы для возврата 2?

number = null и required = false

Вот почему всегда полезно явно добавлять круглые скобки, чтобы цель была ясна с первого взгляда:

Спасибо @ luk2302 и @racraman за ваши ответы! На основе изложенного вами понимания в скобках:

Я просто хочу добавить, что это можно «прочитать» как истину:

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

(Примечание: я не был уверен, лучше ли опубликовать это как обновление вопроса или нет, но, поскольку это технически «объяснение», мне показалось, что ответ был лучшим местом для этого. Если вам нравится мой ответ, пожалуйста upvote @ luk2302 и @racraman, поскольку именно они вдохновили это дополнение)

То есть это эквивалентно:

Более интересный случай

Что можно было бы прочитать как

Чтобы устранить эту двусмысленность, спецификация языка Java пишет:

Условный оператор синтаксически является правоассоциативным (группирует справа налево)

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

Для возврата требуется 2 входа number = null и required = false

Источник

Тройной вопросительный знак

Орфография. Русский язык для нас

Тройной вопросительный знак ⇐ Орфография

Модератор: Селена

Два вопросительных знака что означает. Смотреть фото Два вопросительных знака что означает. Смотреть картинку Два вопросительных знака что означает. Картинка про Два вопросительных знака что означает. Фото Два вопросительных знака что означает

Сообщение Yelquin » 03 мар 2013, 16:30

Авторитетное заявление специалиста в русской орфографии, что тройной вопросительный знак допускается правилами, побудило меня пошарить по сайтам, освежить свою память. Вот, две цитаты:

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

Множество знаков препинания, или кое-что о «многознаке»

Есть такой знак, который называют «многоточие». К сожалению, не все помнят из школьного курса второе название данного знака — «троеточие», и злоупотребляют количеством точек. На клавиатуре нет кнопки «многоточие» (хотя такой единый символ в компьютерных шрифтах присутствует). Этот знак нужно ставить тройным нажатием точки. Причем, именно тройным, и никак не больше!

Часто в интернете можно встретить подобные тексты:
Я не знаю, что мне делать. Я думал.. Много думал. И так ничего и не придумал.

Если бы автор знал, что «многоточие» — это «троеточие», его сообщение выглядело бы куда красивее, и помогли бы ему охотнее.
Я не знаю, что мне делать. Я думал. Много думал. И так ничего и не придумал.

Кстати, часто начинающие сетевые писатели злоупотребляют самим этим знаком (чего уж там: сами грешны). Кажется, что добавив больше длинных логических пауз в текст, можно сделать его «эпичнее». Это не так, потому что длинная пауза хороша только в том случае, если её есть с чем сравнивать. Точка — вполне достаточный знак препинания для определения окончания мысли.
Я не знаю, что мне делать. Я думал. Много думал. И так ничего и не придумал.

Похожее злоупотребление часто встречается с восклицательными и вопросительными знаками:
Помогите. У меня комп полетел. Что делать.

Как правило, в любом форуме вам гораздо быстрее и охотнее ответят на такое сообщение:
Помогите! У меня комп полетел! Что делать?

В крайнем случае, можно использовать три восклицательных знака подряд, но никак не больше (и не два). Три восклицательных знака означают очень громкий возглас. Они будут уместны, например, если вы захотите показать радостный крик на всю округу: «Ур-р-р-ра. ».

В случае со знаком вопроса дела обстоят иначе. Последовательность из трёх символов «. » — неправильна. Вместо неё нужно использовать знак вопроса и знак восклицания «?!»:

Вместо громкого «Что. » надо писать «Что?!».

Итак, помните, что знак «многоточие», обозначающий длинную паузу, состоит из трёх точек, следующих друг за другом. Не следует злоупотреблять этим знаком в своём тексте, ведь длинная пауза хороша только в сравнении с короткими. Правильный восклицательный знак бывает либо единственным, либо тройным (в особо ярких случаях). Не следует злоупотреблять восклицаниями в конце каждого предложения. Вопросительному знаку лучше оставаться в одиночестве, либо в компании с одним восклицательным знаком.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *