Переменные, не входящие в их область, недоступны. Это означает вне блока (внутри фигурных скобок), где они определены (чтобы было проще). Таким образом, вы можете получить доступ к run
только в таких субблоках, как это:
public static void Main(string[] args)
{
var run = 0;
{
run++;
if (run <= 1) {
Welcome();
}
}
Другой способ - сделать переменную частью класса - тогда она станет полем, которое обычно является приватным:
public class Program
{
private static int run;
public static void Main(string[] args)
{
run = 0;
Menu();
}
static void Menu()
{
run++;
if (run <= 1) {
Welcome();
}
}
}
Если вы хотите заниматься объектно-ориентированным программированием, вы можете инкапсулировать это в класс:
public class Program
{
public static void Main(string[] args)
{
var myClass = new MyClass();
myClass.Run = 0;
myClass.Menu();
}
}
public class MyClass
{
public int Run { get; set; }
public void Menu()
{
Run++;
if (Run <= 1) {
Welcome();
}
}
}