поэтому я пытаюсь понять эту вещь, у меня есть две похожие функции
Первая функция определяет, кто выиграет в игре с бумагой, ножницами или камнем, используя блоки if / else
Вторая функция делает то же самое, но использует словари и ключи / значения
Проблема в том, что первая функция работает нормально, но во второй функции я получил ' Использование неназначенных local viarable 'ошибка, которую я знаю, чтобы исправить это, я должен изменить string win1;
на string win1 = "";
, но я не понимаю, почему
Код первой функции:
static string whowin(int x, int y)
{
string win;
if (x == 1)
{
if (y == 2)
{
win = "player2";
}
else if (y == 3)
{
win = "player1";
}
else
{
win = "draw";
}
}
else if (x == 2)
{
if (y == 1)
{
win = "player1";
}
else if (y == 3)
{
win = "player2";
}
else
{
win = "draw";
}
}
else // player 1 choose 3 - scissors
{
if (y == 2)
{
win = "player1";
}
else if (y == 1)
{
win = "player2";
}
else
{
win = "draw";
}
}
return win;
}
и вторая функция:
static string whowin2(int x, int y)
{
// x- player 1 input, y- player 2 input
// 1 - rock, 2- paper, 3 = scissors
Dictionary<int, int> player1win = new Dictionary<int, int>() {
{ 1, 3 },
{ 2, 1 },
{ 3, 2 }
};
Dictionary<int, int> player2win = new Dictionary<int, int>() {
{ 1, 2 },
{ 2, 3 },
{ 3, 1 }
};
string win1;
if (player1win.ContainsKey(x) && player1win[x].Equals(y))
{
win1 = "player1";
}
else if (player2win.ContainsKey(x) && player2win[x].Equals(y))
{
win1 = "player2";
}
else if (x == y)
{
win1 = "draw";
}
else
{
Console.WriteLine("Cos cos sie popsuo");
}
return win1;
}