Что означает оператор if с одним аргументом? - PullRequest
2 голосов
/ 02 августа 2020
    bool paint = false;
    private void panel1_MouseDown(object sender, MouseEventArgs e)
    {
        paint = true;
        
    }

    private void panel1_MouseUp(object sender, MouseEventArgs e)
    {
        paint = false;
    }
    
    private void panel1_MouseMove(object sender, MouseEventArgs e)
    {
        if (paint) //part i am confused about
        {
            
            SolidBrush solidBrush = new SolidBrush(Color.LightBlue);
            graphics.FillEllipse(solidBrush, e.X, e.Y, Convert.ToInt32(toolStripTextBox1.Text), Convert.ToInt32(toolStripTextBox1.Text));
        }
    }

Я смотрел учебник, и парень только что сделал что-то вроде этого. Что означает оператор if, содержащий только одно значение?

Ответы [ 3 ]

3 голосов
/ 02 августа 2020

Это означает, что paint следует рассматривать как что-то, что уже логическое значение (истина или ложь).

То есть, в конце концов, тип значения, которое вы получаете из строки выражения age < 18.

Кроме того, для лучшей читаемости кода я предпочитаю имена в стиле Engli sh для переменных, поэтому я бы выбрал что-то вроде shouldPaint или isPainting в данном случае.

В этом конкретном фрагменте нажатие кнопки мыши устанавливает для paint значение true, а отпускание кнопки устанавливает значение false. Когда вы перемещаете мышь, она использует это значение, чтобы решить, рисовать ли что-либо. Другими словами, это dr aws только когда кнопка мыши зажата.

1 голос
/ 02 августа 2020

Из документации :

Оператор if определяет, какой оператор запускать на основе значения логического выражения. (...)

Логическое выражение - это выражение в скобках после if. И логическая (bool) переменная (или член et c.) Хорошо является логическим выражением. Он оценивает только значение переменной (или члена, et c.). Таким образом, если и только если его значение равно true, будет следовать ветвь if.

0 голосов
/ 03 августа 2020

Давайте go вернемся к истокам. При просмотре файла кода (и пропуске любого раздела заголовка или комментариев для этой цели) имеется несколько уровней структуры.

На внешнем уровне у нас есть блоки . Это участки кода в фигурных скобках (символы { и }). У вас также могут быть неявные блоки с одним оператором.

Внутри блоков у нас есть операторы . Это те вещи, которые обычно заканчиваются точкой с запятой (;), но могут также включать управляющие операторы / заголовки блоков, такие как if, while, return, et c . Думайте об утверждении как о полной «строке» кода, даже если иногда оператор может охватывать несколько строк текста в файле или даже несколько операторов в одной строке текста.

Мы можем удалить другой слой и загляните внутрь заявлений. Здесь находим выражения . Выражение - это часть оператора, которая может быть оценена. Например, возьмите эту строку:

a = b + (c - d);` 

Здесь мы можем сказать, что c - d - это выражение. Мы также можем сказать, что b само по себе является выражением. Но b + не является полным выражением, потому что оператор + неполный. Также нет b + (c, потому что мы разорвали круглые скобки.

Есть несколько различных типов выражений:

  • Условное - где два элемента Сравнено (a == b, a > b, et c)
  • Значение - Выражения, которые приводят к некоторому значению (a + b)
  • Пусто - Выражения, в которых результат пуст, например, вызов метода void (a()).

Вот в чем дело: я солгал. Условные выражения на самом деле не существуют как отдельная категория. Все условные выражения на самом деле являются выражениями значений, где рассматриваемое значение результата является логическим. Все, что на самом деле касается if(), while(), et c, получает логическое выражение. Следовательно, каждый раз, когда вы видите код в следующих строках:

if (a == b)

, вы можете переписать его так:

bool c = (a == b);
if (c)

Потому что c по-прежнему является логическим выражением само по себе . a == b на самом деле просто выражение с логическим результатом, и вы можете поместить любое логическое выражение на его место.

Для полноты мне нужно упомянуть присваивание . Некоторые языки рассматривают присваивание как недействительные выражения. Другие рассматривают присвоение как выражение значения, где результатом является значение, которое было присвоено (C# делает это). Небольшое число обрабатывает присвоение как выражение значения, где результатом является логическое значение true, если присвоение выполнено успешно, и false в противном случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...