Дело в том что у меня изменяется глобальная переменная внутри блока try, но другой блок не хочет видеть ее изменения. Изменял банально x = int.Parse(Console.ReadLine());
что делать в таком случае?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TicTac
{
class Program
{
private static string Center(string str) {
return (String.Concat(Enumerable.Repeat(" ", (Console.WindowWidth / 2 - (str.Length / 2)))) + str);
}
static string welcome = "Игра крестики нолики";
static void Main(string[] args)
{
int x;
int y;
int type;
string[][] map = new string[][] {
new string[] {" ", " ", " "},
new string[] {" ", " ", " "},
new string[] {" ", " ", " "}
};
for (int i = 1; i <= 9; i++)
{
if (i % 2 == 0){
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write("O ");
}
else{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("X ");
}
if (i % 3 == 0)
Console.WriteLine();
}
Console.WriteLine(Center(welcome)+'\n');
Console.WriteLine(Center("Чтобы выйти нажмите ESC"));
while (Console.ReadKey(true).KeyChar != 27) {
try
{
x = int.Parse(Console.ReadLine());
y = int.Parse(Console.ReadLine());
type = int.Parse(Console.ReadLine());
}
catch (Exception e) {
Console.WriteLine("Это должно быть числом");
Console.ReadKey();
Environment.Exit(0);
}
try {
char play;
switch (type) {
case 1:
play = 'x';
break;
case 2:
play = 'o';
break;
default:
play = ' ';
break;
}
map[y][x] = play.ToString();
} catch(Exception e) {
Console.WriteLine("Переполнение");
Console.ReadKey();
Environment.Exit(0);
}
for (int i = 0; i < map.Length; i++)
{
for (int j = 0; j < map[i].Length; j++)
{
;
if (map[i][j] == "x") Console.ForegroundColor = ConsoleColor.Red; else Console.ForegroundColor = ConsoleColor.Blue;
Console.Write(map[i][j] + " ");
}
Console.WriteLine();
}
}
Console.ReadKey();
}
}
}
Если вы на счет присвоения переменной значения в блоке try
, то переменная x
- должна быть инициализирована:
int x = 0; // инициализация
try {
x = int.Parse(Console.ReadLine());
} catch {}
try {
Console.WriteLine(x);
} catch {}
Как писал @AresGod, x должна быть инициализирована.
Дело в том, что C# видит сценарий, когда блок Try не сработал, поэтому он показывает ошибку в сценарии, когда не сработал блок Try(тобишь переменной не присвоено значение).
Поэтому вам нужно в месте объявления проинициализировать переменную. А по хорошему засунуть в блок Try
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте, сейчас пишу telegram-bot на c# и возникла следующая проблема: как сохранять картинки у пользователя на устройстве в определенной...
Я вот прочитал про #region и #endregion что они нужны для группировки членов классов, но более подробно не нашелХочу понять более подробно