Задаю переменной значение 2 а компилятор выдает 49 C# в чем ошибка?

123
21 марта 2019, 09:30

Всем добрый день, Учу C# и пытаюсь понять в чем ошибка.

namespace OWKiller
{
    class Program
    {
        static void Main(string[] args)
        {
            int processnum = 0;
            Console.WriteLine("CSGO #1 Overwatch #2");
            Console.WriteLine(processnum);
            processnum = Console.Read();
            Console.WriteLine(processnum);
            Console.ReadKey();
            //            { 
            //                foreach (var process in Process.GetProcessesByName("Overwatch"))
            //            {
            ///                process.Kill();
            //            }
            //            }
            //        }
        }
    }
}

Если я пишу в консоли 1 то компилятор показывает что я ввел 49 а если 2 то компилятор показывает 50,с чем это связано? почему вместо 1 и 2 он показывает 49 и 50?

Answer 1

Console.Read возвращает число.

Чтобы получить введенный символ в виде char, можно воспользоваться методом Convert.ToChar

ch = Convert.ToChar(Console.Read());
Answer 2

Добился результата следующим кодом.

namespace OWKiller
{
    class Program
    {
        static void Main(string[] args)
        {
            int processnum = 0;
            Console.WriteLine("Overwatch #1 CSGO #2");
            Console.WriteLine(processnum);
            bool checked1 = int.TryParse(Console.ReadLine(), out processnum);
            if (checked1) {
                Console.WriteLine(processnum);
            }

                       if (processnum == 1)
                       { 
                                { 
                                       foreach (var process in Process.GetProcessesByName("Overwatch"))
                                   {
                                   Console.WriteLine("Crashing Overwatch...");
                                       process.Kill();
                                  }
                                   }
                               }
                       else
                       {
                           foreach (var process in Process.GetProcessesByName("csgo"))
                           {
                               Console.WriteLine("Crashing CSGO");
                               process.Kill();
                           }
                       }

        }
    }
}

Всем большое спасибо за помощь!

Answer 3
        int processnum = 0;
        Console.WriteLine("CSGO #1 Overwatch #2");
        Console.WriteLine(processnum);
        // сделайте так чтобы проверить правильно ли вел пользователь значение
        bool isNumber = int.TryParse(Console.ReadLine(), out processnum );
        if(isNumber){
              Console.WriteLine(processnum);
        }            
        Console.ReadKey();
READ ALSO
Сортировка в List<>

Сортировка в List<>

Как отсортировать элементы списка по возрастанию цены? Были попытки сделать это через оператор orderby, но в таком случае просто сортирует одни...

163
Ошибка	XDG0008	Имя &ldquo;MainVM&rdquo; не существует в пространстве имен &ldquo;clr-namespace:StepByStepServer.ViewModels&rdquo;

Ошибка XDG0008 Имя “MainVM” не существует в пространстве имен “clr-namespace:StepByStepServer.ViewModels”

Не могу понять в чем проблемаMainVM существует в StepByStepServer

151
Отслеживание подключение - отключение USB Mono C#

Отслеживание подключение - отключение USB Mono C#

Необходимо отслеживать подключение, отключение USB-COM переходника (FTDI или других)В Windows это сделать не проблема (через тот же WMI), а каким инструментом...

116
Работа с датой в PHP и MySQL [закрыт]

Работа с датой в PHP и MySQL [закрыт]

Задача: Сделать так чтобы каждый месяц 1 числа в БД записывалось какое-то значениеЕсть идеи как это реализовать?

132