Latihan - Blok kode dan cakupan variabel
- 11 menit
Blok kode adalah satu atau lebih pernyataan C# yang menentukan jalur eksekusi. Pernyataan di luar blok kode memengaruhi kapan, jika, dan seberapa sering blok kode tersebut dijalankan pada waktu proses. Batas blok kode biasanya didefinisikan oleh kurung kurawal berlekuk, {}.
Selain efeknya pada jalur eksekusi, blok kode juga dapat memengaruhi cakupan variabel Anda. Sampel kode yang Anda periksa selama latihan ini akan membantu Anda memahami hubungan antara blok kode dan cakupan variabel.
Blok kode memengaruhi cakupan deklarasi variabel
Cakupan variabel mengacu pada visibilitas variabel ke kode lain di aplikasi Anda. Variabel yang dicakup secara lokal hanya dapat diakses di dalam blok kode tempat variabel tersebut ditentukan. Jika Anda mencoba mengakses variabel di luar blok kode, Anda akan mendapatkan kesalahan pengompilasi.
Sisa unit ini mengeksplorasi hubungan antara blok kode dan cakupan variabel.
Menyiapkan lingkungan pengodian Anda
Modul ini mencakup aktivitas langsung yang memandu Anda melalui proses membangun dan menjalankan kode demonstrasi. Anda didorong untuk menyelesaikan aktivitas ini menggunakan Visual Studio Code sebagai lingkungan pengembangan Anda. Menggunakan Visual Studio Code untuk aktivitas ini akan membantu Anda menjadi lebih nyaman menulis dan menjalankan kode di lingkungan pengembang yang digunakan oleh para profesional di seluruh dunia.
Buka Visual Studio Code.
Anda dapat menggunakan Windows menu Mulai (atau sumber daya yang setara untuk OS lain) untuk membuka Visual Studio Code.
Pada menu File Visual Studio Code, pilih Buka Folder.
Dalam dialog Buka Folder , navigasikan ke folder Windows Desktop.
Jika Anda memiliki lokasi folder yang berbeda di mana Anda menyimpan proyek kode, Anda dapat menggunakan lokasi folder tersebut sebagai gantinya. Untuk pelatihan ini, yang penting adalah memiliki lokasi yang mudah ditemukan dan diingat.
Dalam dialog Buka Folder , pilih Pilih Folder.
Jika Anda melihat dialog keamanan yang menanyakan apakah Anda mempercayai penulis, pilih Ya.
Pada menu Terminal Visual Studio Code, pilih Terminal Baru.
Perhatikan bahwa perintah di panel Terminal menampilkan jalur folder untuk folder saat ini. Contoh:
C:\Users\someuser\Desktop>Catatan
Jika Anda bekerja pada PC Anda sendiri daripada di kotak pasir atau lingkungan yang dihosting dan Anda telah menyelesaikan modul Microsoft Learn lainnya dalam seri C# ini, Anda mungkin telah membuat folder proyek untuk sampel kode. Jika demikian, Anda dapat melewati langkah berikutnya, yang digunakan untuk membuat aplikasi konsol di folder TestProject.
Pada prompt perintah Terminal, untuk membuat aplikasi konsol baru di folder tertentu, masukkan perintah berikut:
dotnet new console -o ./CsharpProjects/TestProjectPerintah .NET CLI ini menggunakan templat program .NET untuk membuat proyek aplikasi konsol C# baru di lokasi folder yang ditentukan. Perintah membuat folder CsharpProjects dan TestProject untuk Anda, dan menggunakan TestProject sebagai nama file Anda
.csproj.Jika pesan ditampilkan memberi tahu Anda bahwa file sudah ada, lanjutkan dengan langkah berikutnya. Anda akan menggunakan kembali file proyek yang ada.
Dalam tampilan EXPLORER, perluas folder CsharpProjects .
Anda akan melihat folder TestProject dan dua file, file program C# bernama Program.cs dan file proyek C# bernama TestProject.csproj.
Pada menu File Visual Studio Code, pilih Buka Folder.
Dalam dialog Buka Folder , pilih folder CsharpProjects , lalu pilih Pilih Folder.
Dalam tampilan EXPLORER, perluas folder TestProject, lalu pilih Program.cs.
Hapus baris kode yang ada.
Anda akan menggunakan proyek konsol C# ini untuk membuat, membangun, dan menjalankan sampel kode selama modul ini.
Tutup panel Terminal.
Membuat variabel di dalam blok kode
Anda akan mulai dengan melihat kasus ketika variabel diinisialisasi di dalam blok kode.
Pastikan Anda membuka dan Program.cs Visual Studio Code yang ditampilkan di panel Editor.
Catatan
Program.cs harus kosong. Jika tidak, pilih dan hapus semua baris kode.
Ketik kode berikut ke dalam Editor Visual Studio Code:
bool flag = true; if (flag) { int value = 10; Console.WriteLine($"Inside the code block: {value}"); }Pada menu File Visual Studio Code, pilih Simpan.
File Program.cs harus disimpan sebelum membangun atau menjalankan kode.
Di panel EXPLORER, untuk membuka Terminal di lokasi folder TestProject Anda, klik kanan TestProject, lalu pilih Buka di Terminal Terintegrasi.
Panel Terminal akan terbuka. Terminal harus menyertakan perintah yang menunjukkan bahwa Terminal terbuka untuk lokasi folder TestProject Anda.
Pada perintah Terminal, untuk menjalankan kode Anda, ketik dotnet run lalu tekan Enter.
Catatan
Jika Anda melihat pesan yang mengatakan "Tidak dapat menemukan proyek untuk dijalankan", pastikan bahwa prompt perintah Terminal menampilkan lokasi folder TestProject yang diharapkan. Misalnya:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Anda akan menemukan output berikut:
Inside the code block: 10
Ini adalah output yang diharapkan. Tetapi bagaimana jika Anda ingin mengakses variabel value di luar if blok kode pernyataan?
Mencoba mengakses variabel di luar blok kode tempat variabel dideklarasikan
Di Editor Visual Studio Code, buat baris kode baru di bawah
ifblok kode pernyataan.Pada baris kode kosong yang Anda buat, tambahkan baris kode berikut:
Console.WriteLine($"Outside the code block: {value}");Verifikasi bahwa kode yang diperbarui terlihat seperti berikut ini:
bool flag = true; if (flag) { int value = 10; Console.WriteLine($"Inside the code block: {value}"); } Console.WriteLine($"Outside the code block: {value}");Simpan file kode Anda, lalu gunakan Visual Studio Code untuk menjalankan kode Anda.
Masukkan
dotnet rundari perintah Terminal untuk menjalankan kode Anda.Perhatikan bahwa ketika Anda mencoba menjalankan aplikasi, Anda mendapatkan kesalahan kompilasi:
Program.cs(7,46): error CS0103: The name 'value' does not exist in the current context
Bagian Program.cs(7,46) pesan memberi tahu Anda bahwa kesalahan dikaitkan dengan baris 7 dalam file Program.cs, kolom 46.
Kesalahan ini dihasilkan karena variabel yang dinyatakan di dalam blok kode hanya dapat diakses (hanya dapat dilihat) dalam blok kode tersebut. Karena variabel tidak dapat diakses di luar blok kode tempat variabel dideklarasikan, value tidak dapat diakses dari baris 7 kode Anda.
Variabel yang dideklarasikan dalam blok kode metode disebut sebagai variabel lokal. Anda mungkin melihat istilah variabel lokal yang digunakan saat meninjau artikel yang membahas cakupan variabel.
Memindahkan deklarasi variabel di atas blok kode
Untuk mengakses variabel baik di dalam maupun di luar blok kode, Anda harus mendeklarasikan variabel sebelum (di atas) blok kode sehingga kode di luar blok kode dapat "melihat" variabel.
Perbarui kode Anda di Editor Visual Studio Code sebagai berikut:
bool flag = true; int value; if (flag) { Console.WriteLine($"Inside the code block: {value}"); } value = 10; Console.WriteLine($"Outside the code block: {value}");Luangkan waktu semenit untuk meninjau pembaruan.
Perhatikan bahwa
valuesekarang dinyatakan (tetapi tidak diinisialisasi) di luarifblok kode.Gunakan Visual Studio Code untuk menyimpan pembaruan Anda, lalu jalankan kode Anda.
Perhatikan bahwa Anda masih mendapatkan kesalahan kompilasi.
Kali ini, ketika Anda mencoba menjalankan aplikasi, Anda mendapatkan kesalahan kompilasi berikut:
Program.cs(6,49): error CS0165: Use of unassigned local variable 'value'Kesalahan dikaitkan dengan baris 6 di dalam blok kode karena
valuetidak diinisialisasi (belum diberi nilai). Jika barisvalue = 10;kode terletak di atasifblok kode pernyataan, aplikasi akan mengkompilasi dengan benar dan semuanya akan baik-baik saja. Namun,valuekarena belum diinisialisasi, itu tidak dapat diakses di dalam blok kode.Memastikan bahwa variabel Anda diinisialisasi sebelum mencoba mengaksesnya akan mengatasi masalah ini.
Menginisialisasi variabel sebagai bagian dari deklarasi variabel
Untuk menginisialisasi
valuesebagai bagian dari deklarasi variabel, perbarui kode Anda sebagai berikut:bool flag = true; int value = 0; if (flag) { Console.WriteLine($"Inside the code block: {value}"); } value = 10; Console.WriteLine($"Outside the code block: {value}");Kode ini membahas kesalahan kompilasi "variabel lokal yang tidak ditetapkan" dengan menginisialisasi
valuesebagai bagian dari deklarasi variabel Anda.Gunakan Visual Studio Code untuk menyimpan dan menjalankan kode Anda.
Perhatikan bahwa sekarang, ketika Anda menjalankan aplikasi, Anda melihat output berikut:
Inside the code block: 0 Outside the code block: 10
Periksa interpretasi pengkompilasi kode Anda
Untuk membantu Anda menghindari kesalahan runtime bahasa umum, pengkompilasi C# menganalisis kode Anda di Editor Visual Studio Code dan selama proses build. Namun, pengkompilasi mungkin tidak selalu menafsirkan kode Anda dengan cara yang sama seperti yang Anda lakukan.
Pertimbangkan dua sampel kode berikut yang tampaknya melayani tujuan yang sama:
// Code sample 1
bool flag = true;
int value;
if (flag)
{
value = 10;
Console.WriteLine($"Inside the code block: {value}");
}
Console.WriteLine($"Outside the code block: {value}");
// Code sample 2
int value;
if (true)
{
value = 10;
Console.WriteLine($"Inside the code block: {value}");
}
Console.WriteLine($"Outside the code block: {value}");
Anda mungkin merasa bahwa kedua sampel ini harus selalu menghasilkan hasil yang sama, tetapi pengkompilasi C# menginterpretasikan dua sampel kode ini secara berbeda.
Untuk sampel kode pertama, pengompilasi menafsirkan flag sebagai variabel Boolean yang dapat diberi nilai baik true atau false. Pengkompilasi menyimpulkan bahwa jika flag adalah false, value tidak akan diinisialisasi ketika yang kedua Console.WriteLine() dijalankan. Pada dasarnya kompilator mempertimbangkan dua jalur eksekusi kode berikut untuk dimungkinkan:
// path when flag = true
int value;
value = 10;
Console.WriteLine($"Inside the code block: {value}");
Console.WriteLine($"Outside the code block: {value}");
DAN
// path when flag = false
int value;
Console.WriteLine($"Outside the code block: {value}");
Karena pengkompilasi mempertimbangkan kemungkinan jalur kedua (untuk sampel kode 1), itu menghasilkan pesan kesalahan selama proses build. Selain itu, Editor kode di Visual Studio Code memperingatkan Anda tentang masalah ini dengan menampilkan garis berlekuk merah di bawah value (di bawah blok kode).
Untuk sampel kode kedua, komplotan menyimpulkan bahwa konten if blok kode pernyataan akan selalu dijalankan (true selalu true). Pengkompilasi tidak menghasilkan kesalahan build karena menginterpretasikan sampel kode kedua untuk memiliki satu jalur eksekusi sebagai berikut:
int value;
value = 10;
Console.WriteLine($"Inside the code block: {value}");
Console.WriteLine($"Outside the code block: {value}");
Rekap
Berikut adalah beberapa hal penting yang perlu diingat tentang blok kode:
- Ketika Anda mendeklarasikan variabel di dalam blok kode, visibilitasnya lokal ke blok kode tersebut dan variabel tersebut tidak dapat diakses di luar blok kode.
- Untuk memastikan bahwa variabel terlihat baik di dalam maupun di luar blok kode, Anda harus mendeklarasikan variabel sebelum blok kode (di luar dan di atas blok kode).
- Pastikan variabel diinisialisasi sebelum kode Anda mencoba mengaksesnya (untuk semua jalur eksekusi kode potensial).