Перейти к содержимому

Для чего нужен оператор

  • автор:

Зачем нужен оператор ? при вызове метода? [дубликат]

А конкретно интересен оператор ‘?’ при вызове метода Invoke на событии. Зачем нужен данный оператор? Какую роль он выполняет если применяется подобным образом при вызове методов? Касательно этого куска кода, который некачественно вырезан из контекста, информация не интересна. Нужно общее предназначение оператора ‘?’.

Отслеживать
28.6k 21 21 золотой знак 59 59 серебряных знаков 141 141 бронзовый знак
задан 18 июл 2018 в 8:53
Алексей Федотов Алексей Федотов
704 6 6 серебряных знаков 21 21 бронзовый знак

Синтактический сахар, чтобы не писать if(Boom != null) Boom.Invoke(this, EventArgs.Empty); . И оператор идет вместе с точкой ?. .

18 июл 2018 в 8:58
Вопрос не дубликат, а объяснение того же предмета с обратной стороны. ИМХО.
18 июл 2018 в 11:05

@Kromster Это и называется дубликат. Никто не говорит что этот вопрос плохой или не нужен, просто у этих вопросов общий пул ответов.

20 июл 2018 в 8:52

@vp_arth «Чем забивать гвозди? — молотком» и «Что забивать молотком? — гвозди». Вопросы хоть и с «общим пулом ответов», но все же разные (хотя и связанные).

20 июл 2018 в 8:57

Поэтому(вопросы разные, ответы нет) и существует механизм связывания таких вопросов — «закрытие как дубликата». Это отличается от «закрытия вопросов плохого качества».

20 июл 2018 в 9:07

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Начиная с C# 6.0 в языке появился оператор условного null (Null-Conditional Operator) или, как его нередко называют, элвис-оператор. Он позволяет упростить проверку на значение null в условных конструкциях.

И в данном примере, если Boom == null , вызов Invoke не произойдет. Если Boom != null , то вызов произойдет.

Общее предназначение оператора таково — если переменная, которая стоит перед ? , равна null , то вызов метода на этом объекте не произойдет.

Зачем на съемочной площадке нужен оператор-постановщик?

Оператор-постановщик — одна из самых важных фигур на съёмочной площадке. Его первостепенная задача — воплотить на экране режиссерское видение и идею фильма, донести до зрителя эмоциональную окраску каждого эпизода. Для этого используются различные технические приёмы: хитрые ракурсы, смены точек зрения, колористические и светотональные решения. Например, ракурс снизу вверх расширяет плечи героев и придаёт основательности и решительности, а эффект «голландского угла», т.е заваленного горизонта, создаёт у зрителя ощущение тревоги и дискомфорта. Изменчивая перспектива объектов даже способна создать иллюзию медленного впадения в безумие. Получается, что оператор-постановщик умеет управлять эмоциональным состоянием зрителей, достигая необходимого эффекта для замысла режиссера.

Работа оператора-постановщика требует глубокого понимания материала, с которым ему придётся работать. Подготавливаясь к съемке фильма или ролика, оператор-постановщик работает над сценарием вместе с режиссёром и художником, пытаясь спланировать, как раскрыть творческий замысел режиссера. Именно на его плечи ляжет выбор мест съемок, утверждение эскизов и визуального стиля будущего фильма, проработка освещения и портретов персонажей. Будут ли персонажи ролика органично смотреться в кадре, как на них будет падать свет, как и когда будут использованы визуальные эффекты и музыка — всё это зависит от решений оператора-постановщика.

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

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

Таким образом получается, что профессия оператора-постановщика требует и художественного вкуса, и технических знаний и навыков. Люди этой профессии мыслят зрительными образами и воплощают их на экранах, используя магию освещения и видеоаппаратуры.

Кадр со съемок имиджевого ролика для Трубодетали

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

Посмотрите, что такое качественная операторская работа на примере наших рекламных видеороликов и корпоративных фильмов. Мы используем динамические камеры, продумываем освещение и композицию, а главное — всегда вкладываем в ролики душу.

Для чего нужен оператор

Оператор — это законченное предложение, записанное на каком-либо языке программирования. В нашем случае — на языке C#. Каждый оператор в программе на C# обязательно заканчивается символом ; (точка с запятой).

Операторы условно можно подразделить на две категории: исполняемые — с их помощью реализуется алгоритм решаемой задачи, и описательные , необходимые для определения типов пользователя и объявления объектов программы, например, переменных.

Классификация исполняемых операторов

Все исполняемые операторы можно разбить на две группы: простые и структурированные. К простым операторам можно отнести оператор присваивания, пустой оператор, операторы переходов ( goto , break , continue , return ), оператор-выражение, вызов метода как отдельного оператора.

Структурированные операторы — это сложные (составные) операторы, которые могут объединять в себе другие операторы. К этой категории относятся операторы ветвления if , выбора switch и операторы циклов ( for , while , do , foreach ).

Теперь более подробно рассмотрим простые операторы.

Оператор присваивания

Оператор присваивания — это самый употребительный оператор. Его назначение — присвоить новое значение какой-либо переменной. В C# имеется три формы этого оператора.

1) Простой оператор присваивания записывается так:

Данный оператор работает следующим образом: вначале вычисляется выражение, записанное справа от символа операции = (равно), затем полученный результат присваивается переменной, стоящей слева от знака = . Тип результата должен совпадать с типом переменной, записанной слева, или быть к нему приводимым.

Слева от знака = может быть только переменная, справа же можно записать и константу, и переменную и вообще выражение любой сложности.

2) Множественное присваивание — в таком операторе последовательно справа налево нескольким переменным присваивается одно и то же значение, например:

Так можно сразу определить, к примеру, что в равностороннем треугольнике все стороны равны одному и тому же числу 1 . Приведенный выше оператор эквивалентен последовательному выполнению трёх операторов:

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

3) Присваивание с одновременным выполнением какой-либо операции в общем виде записывается так:

переменная знак_операции = выражение;

и равносильно записи

переменная = переменная знак_операции выражение ;

s += 5; // 1-й вариант

делает то же самое, что и оператор

s = s + 5; // 2-й вариант

а именно: взять старое значение из переменной s , прибавить к нему число 5 и полученное значение снова записать в переменную s .

Как видим, запись 1-го варианта короче записи 2-го варианта, да и выполняется быстрее, так как в 1-м варианте адрес переменной s вычисляется 1 раз, а во 2-м варианте — дважды.

Оператор-выражение

В языке C# в ряде случаев выражение, которое заканчивается символом ; (точка с запятой), считается законченным предложением, т.е. оператором. Примеры:

1)Выполняется префиксная операция автоуменьшения:

2)Выполняется постфиксная операция автоувеличения:

3)Вызывается метод для вывода данных на дисплей монитора (выводится текст «Тест»):

А вот такой оператор на языке C# недопустим :

хотя в языках-предшественниках C и C++ он был возможен.

Пустой оператор

Пустой оператор — это оператор, который ничего не выполняет. Зачем нужен «бесполезный» оператор?

Пустой оператор используется в тех случаях, когда по синтаксису языка требуется записать какой-либо оператор, а по логике программы мы не собираемся что-либо делать. Так, пустой оператор может потребоваться в операторе ветвления, когда по какой-либо ветви ничего не требуется выполнять, так же для того, чтобы определить метку для перехода в тексте программы, а иногда — для пустого тела цикла.

Пустой оператор — это одиночный символ ; (точка с запятой), например:

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

Операторы перехода

Для изменения последовательного выполнения операторов используются операторы перехода. Это операторы goto , continue , break , return. Рассмотрим их подробнее.

Этот оператор позволяет сделать переход в пределах текущего метода. Переход возможен как по ходу выполнения программы, так и в обратном направлении. Пример:

Здесь Metka — это идентификатор (метка), обозначающий то место в тексте программы, куда делается переход. Такая метка не требует описания (её и нельзя описывать!), задается по общим правилам и не может совпадать ни с ключевыми словами, ни с именами объектов программы.

В языке C# этот оператор используется редко. Необдуманное применение goto приводит к затруднению понимания текста программы. Как правило, если в тексте программы требуется использование этого оператора, то это означает слабую логику в проектировании алгоритма программы.

Данный оператор применяется для выхода из операторов циклов ( for , while , do , foreach ) или оператора выбора switch . При использовании этого оператора метки не нужны, как как управление передаётся на оператор, следующий за оператором цикла или выбора.

Вот этот оператор в программах на C# применяется очень часто! А оператор switch вообще без break не используют. Примеры применения оператора break рассмотрим в соответствующих темах.

Позволяет передать управление в конец цикла. Применяется гораздо реже, чем оператор break . Как правило, всегда можно построить алгоритм решаемой задачи без использования оператора continue . Пример применения оператора continue рассмотрим в теме «Циклы».

Обеспечивает выход из метода. Управление передаётся оператору, следующему за вызовом метода. Примеры применения оператора return рассмотрим в темах, связанных с использованием методов.

Операторы сложения — + и +=

Операторы + и += поддерживаются встроенными целыми числовыми типами и числовыми типами с плавающей запятой, а также строковым типом и типамиделегатов.

Объединение строк

Если один или оба операнда имеют тип string, оператор + сцепляет строковые представления этих операндов (строковое представление null является пустой строкой):

Console.WriteLine("Forgot" + "white space"); Console.WriteLine("Probably the oldest constant: " + Math.PI); Console.WriteLine(null + "Nothing to add."); // Output: // Forgotwhite space // Probably the oldest constant: 3.14159265358979 // Nothing to add. 

Интерполяция строк предоставляет более удобный способ форматирования строк:

Console.WriteLine($"Probably the oldest constant: "); // Output: // Probably the oldest constant: 3.14 

Начиная с C# 10, можно использовать интерполяцию строк для инициализации константной строки, если все выражения, используемые для заполнителей, также являются константными строками.

Начиная с C# 11 оператор + выполняет объединение строк для строк литеральных строк UTF-8. Этот оператор объединяет два ReadOnlySpan объекта.

Объединение делегатов

Для операндов того же типа delegate оператор + возвращает новый экземпляр делегата, при вызове которого вызывается сначала левый, а затем правый операнд. Если какой-либо из операндов имеет значение null , оператор + возвращает значение другого операнда (это тоже может быть null ). Следующий пример демонстрирует объединение делегатов с помощью оператора + :

Action a = () => Console.Write("a"); Action b = () => Console.Write("b"); Action ab = a + b; ab(); // output: ab 

Для удаления делегатов используйте оператор — .

См. дополнительные сведения о типах делегатов.

Оператор присваивания сложения (+=)

Выражение, использующее оператор += , такое как

x += y 
x = x + y 

за исключением того, что x вычисляется только один раз.

В следующем примере иллюстрируется использование оператора += .

int i = 5; i += 9; Console.WriteLine(i); // Output: 14 string story = "Start. "; story += "End."; Console.WriteLine(story); // Output: Start. End. Action printer = () => Console.Write("a"); printer(); // output: a Console.WriteLine(); printer += () => Console.Write("b"); printer(); // output: ab 

Можно также использовать оператор += , который позволяет указать метод обработчика событий при подписке на событие. Дополнительные сведения см. в разделе Практическое руководство. Подписка и отмена подписки на события.

Возможность перегрузки оператора

Определяемый пользователем тип может перегружать оператор + . При перегрузке бинарного оператора + неявно перегружается и соответствующий оператор += . Определяемый пользователем тип не может явно перегружать += оператор.

Спецификация языка C#

См. также

  • справочник по C#
  • Операторы и выражения C#
  • Сцепка нескольких строк
  • События
  • Арифметические операторы
  • Операторы — и -=

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

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

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