C # У меня проблемы с переменными, которые не работают так, как я ожидал - PullRequest
0 голосов
/ 11 сентября 2018

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

Невозможно неявно преобразовать тип 'int' в 'string.'

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

Random r = new Random();
    int hit = r.Next(1, 5);
    string hitPoints = hit.ToString();


    EmbedBuilder builder = new EmbedBuilder();



    if (hitPoints = 1)
    { 
        builder.WithTitle("");
    }

1 Ответ

0 голосов
/ 11 сентября 2018

Добро пожаловать в переполнение стека!

Я вижу, что вы объявили и присвоили hitpoints в виде строки:

string hitPoints = hit.ToString();

Но ниже вы сравниваете ее (я надеюсь)на номер:

if (hitPoints = 1)

Там есть две проблемы.Во-первых, это не оператор сравнения.Во-вторых, литерал 1 не является строкой.

Если вы действительно хотите, чтобы hitPoints была строкой, и вы хотите сравнить ее с 1, попробуйте следующее:

if (hitPoints == "1")

Примечание: позвольте мне рекомендовать вам не хранить hitPoints в виде строки, чтобы вывести ее как единое целое.Вы всегда можете позвонить .ToString() в существующей переменной hit:

int hit = r.Next(1, 5);

if (hit == 1) {
    // do a thing
}

// using newer string interpolation, implicit hit.ToString()
Console.WriteLine($"Hit was {hit}");

// using old format, implicit hit.ToString()
Console.WriteLine("Hit was {0}", hit);

// using old format, explicit hit.ToString()
Console.WriteLine("Hit was {0}", hit.ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...