Memahami Cakupan Variabel C#: Tingkat Kelas, Metode, dan Blok
Memahami Cakupan Variabel C#
Panduan ini menjelaskan cara cakupan variabel bekerja di C#, mencakup cakupan tingkat kelas, metode, dan blok dengan contoh yang jelas dan praktis.
Cakupan variabel menentukan di mana variabel dapat diakses dalam kode Anda. Di C#, Anda akan menemukan tiga cakupan utama.
- Cakupan Tingkat Kelas
- Cakupan Tingkat Metode
- Cakupan Tingkat Blok
Cakupan Variabel Tingkat Kelas
Saat variabel dideklarasikan di dalam kelas tetapi di luar metode atau konstruktor, ia adalah field dan dapat diakses oleh semua anggota dari kelas tersebut. Ini dikenal sebagai cakupan tingkat kelas.
using System; namespace VariableScope { class Program { // Class-level field string str = "Class Level"; public void Display() { Console.WriteLine(str); } static void Main(string[] args) { Program ps = new Program(); ps.Display(); Console.ReadLine(); } } }
Output
Class Level
Dalam contoh ini, str adalah field, jadi ia tersedia di seluruh kelas Program, termasuk metode Display.
Catatan penting: Field instance tidak dapat diakses dari metode statis kecuali menggunakan instance. Misalnya:
static void Display2() { // Ini akan menyebabkan kesalahan waktu kompilasi Console.WriteLine(str); }
Cakupan Variabel Tingkat Metode
Variabel yang dideklarasikan di dalam metode adalah lokal untuk metode tersebut. Mereka tidak dapat direferensikan di luar metode yang mendefinisikannya, yang disebut cakupan tingkat metode.
using System; namespace VariableScope { class Program { public void Method1() { // Variabel lokal string str = "method level"; } public void Method2() { // Mencoba mengakses str di sini akan menyebabkan kesalahan Console.WriteLine(str); } static void Main(string[] args) { Program ps = new Program(); ps.Method2(); Console.ReadLine(); } } }
Mencoba menggunakan str di Method2 menghasilkan kesalahan kompiler:
Error CS0103: The name 'str' does not exist in the current context
Sebaliknya, variabel lokal dapat digunakan di dalam metode yang sama:
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(); } } }
Output
inside method
Cakupan Variabel Tingkat Blok di C#
Variabel yang dideklarasikan di dalam blok—seperti perulangan, pernyataan if, atau cakupan bersarang lainnya—hanya dapat diakses di dalam blok tersebut. Ini dikenal sebagai cakupan tingkat blok.
using System; namespace VariableScope { class Program { public void Display() { for (int i = 0; i <= 3; i++) { // i terbatas pada perulangan for ini } // Console.WriteLine(i); // ❌ kesalahan waktu kompilasi } static void Main(string[] args) { Program ps = new Program(); ps.Display(); Console.ReadLine(); } } }
Di sini, penghitung perulangan i tidak dapat direferensikan setelah perulangan, karena cakupannya berakhir dengan blok.