Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Область видимости переменных в C#: класс, метод и блок

Область видимости переменных в C#

Это руководство объясняет, как работает область видимости переменных в C#, охватывая классовый, методовый и блочный уровни с наглядными примерами.

Область видимости переменной определяет, где в коде к ней можно получить доступ. В C# встречаются три основных уровня.


Классовый уровень видимости

Когда переменная объявлена внутри класса, но вне методов или конструкторов, она является полем и доступна всем членам этого класса. Это классовый уровень.

using System;
namespace VariableScope {
    class Program {
        // Классовое поле
        string str = "Class Level";
        public void Display() {
            Console.WriteLine(str);
        }
        static void Main(string[] args) {
            Program ps = new Program();
            ps.Display();
            Console.ReadLine();
        }
    }
}

Вывод

Class Level

В примере str — поле, доступно во всем классе Program, включая метод Display.

Важно: Поля экземпляра недоступны из статических методов без создания экземпляра. Например:

static void Display2() {
    // Ошибка компиляции
    Console.WriteLine(str);
}

Методовый уровень видимости

Переменные, объявленные внутри метода, локальны для этого метода. Их нельзя использовать вне определяющего их метода — это методовый уровень.

using System;
namespace VariableScope {
    class Program {
        public void Method1() {
            // Локальная переменная
            string str = "method level";
        }
        public void Method2() {
            // Попытка доступа к str вызовет ошибку
            Console.WriteLine(str);
        }
        static void Main(string[] args) {
            Program ps = new Program();
            ps.Method2();
            Console.ReadLine();
        }
    }
}

Обращение к str в Method2 вызывает ошибку компилятора:

Error CS0103: The name 'str' does not exist in the current context

В то же время локальная переменная может использоваться в том же методе:

using System;
namespace VariableScope {
    class Program {
        public void Display() {
            string str = "inside method";
            Console.WriteLine(str);
        }
        static void Main(string[] args) {
            Program ps = new Program();
            ps.Display();
            Console.ReadLine();
        }
    }
}

Вывод

inside method

Блочный уровень видимости в C#

Переменные, объявленные внутри блока — циклов, if, или других вложенных областей — доступны только внутри этого блока. Это блочный уровень.

using System;
namespace VariableScope {
    class Program {
        public void Display() {
            for (int i = 0; i <= 3; i++) {
                // i ограничена этим for-блоком
            }
            // Console.WriteLine(i); // ❌ ошибка компиляции
        }
        static void Main(string[] args) {
            Program ps = new Program();
            ps.Display();
            Console.ReadLine();
        }
    }
}

Здесь счетчик цикла i нельзя использовать после цикла, так как его область заканчивается с блоком.

Язык C

  1. Ключевое слово global в Python: как и когда использовать
  2. Указатели в C++: концепции, примеры и практические применения
  3. Переменные, типы данных и константы в C — практическое руководство
  4. Понимание назначений в Verilog: типы, синтаксис и лучшие практики
  5. Гейтовое моделирование в Verilog: от схем к коду
  6. Понимание и печать timescale в Verilog в любой области видимости
  7. Типы переменных в Java: локальные, экземпляра и статические
  8. Переменные в C: объявление, определение, инициализация, область видимости и классы хранения
  9. Правила области видимости в C: локальные, глобальные и формальные переменные
  10. Указатели в C: полное руководство — объявление, арифметика, массивы, функции и динамическая память