Как мне обновить только одну зависимость композитора?

Я предлагаю вам использовать TryParse:

Console.WriteLine("1. Add account.");
Console.WriteLine("Enter choice: ");
string input = Console.ReadLine();
int number;
Int32.TryParse(input, out number);

Таким образом, ваше приложение не генерирует исключение, если вы пытаетесь разобрать что-то вроде «1q» или «23e», потому что кто-то сделал ошибку.

Int32.TryParse возвращает логическое значение, поэтому вы можете использовать его в инструкции if, чтобы узнать, нужно ли вам разветвлять ваш код:

int number;
if(!Int32.TryParse(input, out number))
{
   //no, not able to parse, repeat, throw exception, use fallback value?
}

На ваш вопрос: вы не найдете решения для чтения целого числа, потому что ReadLine() читает всю командную строку, threfor возвращает строку. Что вы можете сделать, попробуйте преобразовать этот вход в переменную int16 / 32/64.

Для этого существует несколько методов:

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

Update В C # 7.0 переменные out могут быть объявлены непосредственно там, где они передаются в качестве аргумента, поэтому приведенный выше код можно сконденсировать в это:

if(Int32.TryParse(input, out int number))
{
   /* Yes input could be parsed and we can now use number in this code block 
      scope */
}
else 
{
   /* No, input could not be parsed to an integer */
}

Полный пример будет выглядеть следующим образом:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");
        var foo = Console.ReadLine();
        if (int.TryParse(foo, out int number1)) {
            Console.WriteLine($"{number1} is a number");
        }
        else
        {
            Console.WriteLine($"{foo} is not a number");
        }
        Console.WriteLine($"The value of the variable {nameof(number1)} is {number1}");
        Console.ReadLine();
    }
}

Здесь вы можете видеть, что переменная number1 действительно инициализируется, даже если вход не является числом и имеет значение 0 независимо, поэтому он действителен даже вне объявления, если блок

30
задан zerkms 3 October 2013 в 00:19
поделиться