Har bir o'zgaruvchi ma'lum bir kontekst yoki doirada mavjud. Ushbu kontekstdan tashqari, o'zgaruvchi endi mavjud emas.
Class konteksti. Sinf darajasida aniqlangan o'zgaruvchilar ushbu sinfning istalgan usulida mavjud. Ular global o'zgaruvchilar yoki maydonlar deb ham ataladi.
Usul konteksti. Usul darajasida aniqlangan o'zgaruvchilar mahalliy bo'lib, faqat shu usulda foydalanish mumkin. Ular boshqa usullarda mavjud emas.
Kod blokining konteksti. Kod bloki darajasida aniqlangan o'zgaruvchilar ham mahalliy bo'lib, faqat shu blokda mavjud. Ularga kod blokidan tashqari kirish mumkin emas.
Masalan, dastur kodi quyidagicha aniqlangan deylik:
Person tom = new(); tom.PrintName(); tom.PrintSurname(); class Person { string type = "Person"; public void PrintName() { string name = "Tom"; { string shortName = "Tomas"; Console.WriteLine(type); Console.WriteLine(name); Console.WriteLine(shortName); } Console.WriteLine(type); Console.WriteLine(name); public void PrintSurname() { string surname = "Smith"; Console.WriteLine(type); Console.WriteLine(surname); } } Bu erda, albatta, to'rtta o'zgaruvchi mavjud: tur, ism, shortName va familiya. Ularning har biri o'ziga xos kontekstda mavjud. O'zgaruvchi type butun Person klassi kontekstida mavjud bo'lib, PrintName va PrintSurname usullarida istalgan joyda va kod blokida mavjud.
O'zgaruvchi namefaqat PrintName usulida mavjud. Xuddi o'zgaruvchi surnamePrintSurname usulida mavjud bo'lgani kabi. PrintName usulida biz o'zgaruvchiga kira olmaymiz, surnamechunki u boshqa kontekstda.
O'zgaruvchi shortNamefaqat chegaralari ochilish va yopish jingalak qavslar bo'lgan kod blokida mavjud. Uning chegaralaridan tashqarida shortName oʻzgaruvchisi mavjud emas va unga kirish imkoni yoʻq.
Ko'pincha, turli kontekstlarning chegaralari kod bloki, usul, sinf chegaralarini belgilaydigan bu holatda bo'lgani kabi, jingalak qavslarni ochish va yopish bilan bog'liq bo'lishi mumkin.
O'zgaruvchilar bilan ishlashda shuni yodda tutingki, metod yoki kod blokida aniqlangan mahalliy o'zgaruvchilar, agar nomlari mos kelsa, sinf darajasidagi o'zgaruvchilarni yashiradi:
class Person { string name = "Tom"; public void PrintName() { string name = "Tomas"; Console.WriteLine(name); // Tomas } } O'zgaruvchilarni e'lon qilishda siz bir kontekstda bir xil nomli bir nechta o'zgaruvchilarni aniqlay olmasligingizni ham hisobga olishingiz kerak.