C # имеет области применения.Элемент в области видимости может видеть все в областях, которые его содержат, но внешние области не могут видеть внутри внутренних областей.Вы можете прочитать о областях действия здесь .
. Возьмите свой пример:
if (input == "create: archer")
{
Archer iArcher = new Archer();
iArcher.setProp(100, 20, 4f, 8f, 3.5f, 25f);
}
iArcher
входит в сферу действия вашего оператора if
, поэтому код за пределами этогооператор if не может его увидеть.
Чтобы решить эту проблему, переместите определение или iArcher
за пределы оператора if:
Archer iArcher = new Archer();
if (input == "create: archer")
{
iArcher.setProp(100, 20, 4f, 8f, 3.5f, 25f);
}
if (input == "property: archer")
{
Console.WriteLine(iArcher.getProp());
}
Обратите внимание, что теперь это оставляет вас с другимпроблема: input
не может быть одновременно "create: archer" и "property: archer".
Одним из решений может быть перемещение пользовательского ввода внутри цикла, сохраняя iArcher
вне этого цикла:
Archer iArcher = new Archer();
string input = null;
while ((input = Console.ReadLine()) != "exit")
{
if (input == "create: archer")
{
iArcher.setProp(100, 20, 4f, 8f, 3.5f, 25f);
}
else if (input == "property: archer")
{
Console.WriteLine(iArcher.getProp());
}
}
Чтобы выйти из цикла, просто введите «exit» в качестве ввода.