C# несколько операторов if - объектно-ориентированное программирование - PullRequest
0 голосов
/ 02 февраля 2020

Я новичок в объектно-ориентированном программировании и C# в целом.

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

Вот мой код:

public class Log : MonoBehaviour
{
    public string message;
    public bool toPrint;
    public int score;
    public int score2;

    void Start()
    {
        if (toPrint == true )
        {
            Debug.Log(message);
        }

        else if (score > score2)
        {
            Debug.Log("Score is bigger than Score2");
        }

        else if (score2 > score)
        {
            Debug.Log("Score2 is bigger than Score");
        }
        else
        {
            Debug.Log("They are equal!");
        }
    }
}

Спасибо.

Ответы [ 3 ]

0 голосов
/ 02 февраля 2020

Я бы предложил использовать метод печати:

void Print(string message)
{
    if (!toPrint)
    {
        return;
    }

    Debug.Log(message);
}

Теперь остальная часть кода не должна касаться toPrint:

public class Log : MonoBehaviour
{
    public string message;
    public bool toPrint;
    public int score;
    public int score2;

    void Start()
    {
        // Print(message);
        if (score > score2)
        {
            Print("Score is bigger than Score2");
        }
        else if (score2 > score)
        {
            Print("Score2 is bigger than Score");
        }
        else
        {
            Print("They are equal!");
        }
    }

    void Print(string text)
    {
        if (!toPrint)
        {
            return;
        }

        Debug.Log(text);
    }
}
0 голосов
/ 02 февраля 2020

Включите все операторы, которые вы хотите использовать, когда toPrint равен true в операторе if:

void Start()
{
    if (toPrint)
    {
        Debug.Log(message);

        if (score > score2)
        {
            Debug.Log("Score is bigger than Score2");
        }
        else if (score2 > score)
        {
            Debug.Log("Score2 is bigger than Score");
        }
        else
        {
            Debug.Log("They are equal!");
        }
    }
}

Операторы if теперь вложены, а не объединены в цепочку. Решения о том, следует ли нам печатать и какое сообщение мы хотим напечатать, теперь разделены.

Обратите внимание, что вам не нужно проверять с toPrint == true, так как все требования if-оператора являются логическими. toPrint уже является логическим значением, содержащим правильное значение. Сравнение с true дает true, когда toPrint равно true и false, когда toPrint равно false. == true ничего не меняет, просто x * 1 - это то же самое, что и x.

0 голосов
/ 02 февраля 2020

Это, вероятно, структура, которую вы ищете, хотя трудно понять, чего именно вы пытаетесь достичь sh.

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

public class Log : MonoBehaviour
{
    public string message;
    public bool toPrint;
    public int score;
    public int score2;

    void Start()
    {
        if (score > score2)
        {
            message = "Score is bigger than Score2";
        }
        else if (score2 > score)
        {
            message = "Score2 is bigger than Score";
        }
        else
        {
            message = "They are equal!";
        }
        if (toPrint == true)
        {
            Debug.Log(message);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...