Alıştırma - Kod blokları ve değişken kapsamı
- 11 dakika
Kod bloğu, yürütme yolunu tanımlayan bir veya birden fazla C# deyimidir. Kod bloğunun dışındaki deyimler, bu kod bloğunun çalışma zamanında ne zaman, if ve ne sıklıkta yürütüldüğünü etkiler. Kod bloğunun sınırları genellikle dalgalı ayraçlar {}tarafından tanımlanır.
Kod blokları, yürütme yolu üzerindeki etkilerine ek olarak değişkenlerinizin kapsamını da etkileyebilir. Bu alıştırma sırasında incelediğiniz kod örnekleri, kod blokları ile değişken kapsamı arasındaki ilişkiyi anlamanıza yardımcı olur.
Kod blokları değişken kapsamı bildirimini etkiler
Değişken kapsamı , bir değişkenin uygulamanızdaki diğer koda görünürlüğünü ifade eder. Yerel kapsama sahip bir değişkene yalnızca içinde tanımlandığı kod bloğunun içinden erişilebilir. Kod bloğunun dışında değişkene erişmeye çalışırsanız derleyici hatası alırsınız.
Bu ünitenin geri kalanı, kod blokları ile değişken kapsamı arasındaki ilişkiyi inceler.
Kodlama ortamınızı hazırlama
Bu modül, tanıtım kodu oluşturma ve çalıştırma sürecinde size yol gösteren uygulamalı etkinlikleri içerir. Geliştirme ortamınız olarak Visual Studio Code kullanarak bu etkinlikleri tamamlamanız tavsiye edilir. Bu etkinlikler için Visual Studio Code'un kullanılması, dünya çapındaki profesyoneller tarafından kullanılan bir geliştirici ortamında daha rahat kod yazmanıza ve çalıştırmanıza yardımcı olur.
Visual Studio Code'u açın.
Visual Studio Code'u açmak için Windows Başlat menüsü (veya başka bir işletim sistemi için eşdeğer kaynak) kullanabilirsiniz.
Visual Studio Code Dosyası menüsünde Klasör Aç'ı seçin.
Klasör Aç iletişim kutusunda Windows Masaüstü klasörüne gidin.
Kod projelerini tuttuğunuz farklı bir klasör konumunuz varsa, bunun yerine bu klasör konumunu kullanabilirsiniz. Bu eğitim için önemli olan, kolayca bulunabilecek ve anımsanabilecek bir konuma sahip olmaktır.
Klasör Aç iletişim kutusunda Klasör Seç'i seçin.
Yazarlara güvenip güvenmeyişinizi soran bir güvenlik iletişim kutusu görürseniz Evet'i seçin.
Visual Studio Code Terminal menüsünde Yeni Terminal'i seçin.
Terminal panelindeki bir komut isteminin geçerli klasörün klasör yolunu görüntülediğine dikkat edin. Örneğin:
C:\Users\someuser\Desktop>Not
Korumalı alan veya barındırılan bir ortam yerine kendi bilgisayarınızda çalışıyorsanız ve bu C# serisindeki diğer Microsoft Learn modüllerini tamamladıysanız, kod örnekleri için zaten bir proje klasörü oluşturmuş olabilirsiniz. Bu durumda, TestProject klasöründe bir konsol uygulaması oluşturmak için kullanılan sonraki adımı atlayabilirsiniz.
Terminal komut isteminde, belirtilen klasörde yeni bir konsol uygulaması oluşturmak için aşağıdaki istemi girin:
dotnet new console -o ./CsharpProjects/TestProjectBu .NET CLI komutu, belirtilen klasör konumunda yeni bir C# konsol uygulaması projesi oluşturmak için bir .NET program şablonu kullanır. Komut sizin için CsharpProjects ve TestProject klasörlerini oluşturur ve dosyanızın
.csprojadı olarak TestProject kullanır.Dosyaların zaten var olduğunu belirten bir ileti görüntülenirse, sonraki adımlarla devam edin. Mevcut proje dosyalarını yeniden kullanacaksınız.
EXPLORER görünümünde CsharpProjects klasörünü genişletin.
TestProject klasörünü ve iki dosyayı, Program.cs adlı bir C# program dosyasını ve TestProject.csproj adlı bir C# proje dosyasını görmeniz gerekir.
Visual Studio Code Dosyası menüsünde Klasör Aç'ı seçin.
Klasör Aç iletişim kutusunda CsharpProjects klasörünü ve ardından Klasör Seç'i seçin.
EXPLORER görünümünde TestProject klasörünü genişletin ve Program.cs'ı seçin.
Mevcut kod satırlarını silin.
Bu modül sırasında kod örnekleri oluşturmak, derlemek ve çalıştırmak için bu C# konsol projesini kullanacaksınız.
Terminal panelini kapatın.
Kod bloğunun içinde değişken oluşturma
Bir kod bloğu içinde bir değişken başlatıldığında büyük/küçük harfe bakarak başlayacaksınız.
Visual Studio Code'un açık olduğundan ve Düzenleyici panelinde Program.cs görüntülendiğinden emin olun.
Not
Program.cs boş olmalıdır. Değilse, tüm kod satırlarını seçin ve silin.
Visual Studio Code Düzenleyicisi'ne aşağıdaki kodu yazın:
bool flag = true; if (flag) { int value = 10; Console.WriteLine($"Inside the code block: {value}"); }Visual Studio Code Dosyası menüsünde Kaydet'i seçin.
kodu oluşturmadan veya çalıştırmadan önce Program.cs dosyasının kaydedilmesi gerekir.
EXPLORER panelinde, TestProject klasör konumunuzdaki bir Terminali açmak için TestProjesi'ne sağ tıklayın ve Tümleşik Terminalde Aç'ı seçin.
Bir Terminal paneli açılır. Terminal, Terminal'in TestProject klasör konumunuza açık olduğunu gösteren bir komut istemi içermelidir.
Terminal komut isteminde kodunuzu çalıştırmak için dotnet run yazın ve Enter tuşuna basın.
Not
"Çalıştırılacak proje bulunamadı" iletisini görürseniz Terminal komut isteminin beklenen TestProject klasörü konumunu gösterdiğinden emin olun. Örneğin:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Aşağıdaki çıkışı görmeniz gerekir:
Inside the code block: 10
Bu beklenen çıkıştır. Peki deyimi kod bloğunun value dışındaki değişkene if erişmek istiyorsanız ne olur?
Bildirildiği kod bloğunun dışındaki bir değişkene erişmeye çalışma
Visual Studio Code Düzenleyicisi'nde deyim kod bloğunun
ifaltında yeni bir kod satırı oluşturun.Oluşturduğunuz boş kod satırına aşağıdaki kod satırını ekleyin:
Console.WriteLine($"Outside the code block: {value}");Güncelleştirilmiş kodunuzun aşağıdaki gibi göründüğünü doğrulayın:
bool flag = true; if (flag) { int value = 10; Console.WriteLine($"Inside the code block: {value}"); } Console.WriteLine($"Outside the code block: {value}");Kod dosyanızı kaydedin ve ardından Visual Studio Code'u kullanarak kodunuzu çalıştırın.
Kodunuzu çalıştırmak için Terminal komut isteminden girin
dotnet run.Uygulamayı çalıştırmayı denediğinizde bir derleme hatasıyla karşılaştığınıza dikkat edin:
Program.cs(7,46): error CS0103: The name 'value' does not exist in the current context
İletinin Program.cs(7,46) bölümü, hatanın Program.cs dosyasındaki 7. satır 46 ile ilişkili olduğunu bildirir.
Bu hata, bir kod bloğu içinde bildirilen bir değişkenin yalnızca bu kod bloğu içinde erişilebilir (yalnızca görülebilir) olması nedeniyle oluşturulur. Bir değişkene bildirildiği kod bloğu dışından erişilemediğinden, value kodunuzun 7. satırından erişilemez.
Yöntem kodu bloğunda bildirilen bir değişken, yerel değişken olarak adlandırılır. Değişken kapsamını ele alan makaleleri gözden geçirirken kullanılan yerel değişken terimini görebilirsiniz.
Değişken bildirimini kod bloğunun üzerine taşıma
Kod bloğunun içindeki ve dışındaki bir değişkene erişmek için, kod bloğunun dışındaki kodun değişkeni "görebilmesi" için değişkeni kod bloğundan önce (yukarıda) bildirmeniz gerekir.
Visual Studio Code Düzenleyicisi'nde kodunuzu aşağıdaki gibi güncelleştirin:
bool flag = true; int value; if (flag) { Console.WriteLine($"Inside the code block: {value}"); } value = 10; Console.WriteLine($"Outside the code block: {value}");Güncelleştirmeleri gözden geçirmek için bir dakika bekleyin.
valueArtık kod bloğunun dışındaifbildirildiğini (ancak başlatılmadığını) dikkat edin.Güncelleştirmelerinizi kaydetmek için Visual Studio Code'u kullanın ve kodunuzu çalıştırın.
Derleme hatası almaya devam ettiğinize dikkat edin.
Bu kez, uygulamayı çalıştırmayı denediğinizde aşağıdaki derleme hatasını alırsınız:
Program.cs(6,49): error CS0165: Use of unassigned local variable 'value'Hata, başlatılmadığından (bir değer atanmamış) kod bloğunun
valueiçindeki 6. satırla ilişkilendirildi. Kod satırıvalue = 10;deyim kodu bloğununifüzerinde yer alıyorsa, uygulama doğru derlenebilir ve her şey yolunda olurdu. Ancak başlatılmadığındanvaluekod bloğunun içinden erişilemez.Bunlara erişmeye çalışmadan önce değişkenlerinizin başlatıldığından emin olmak bu sorunu çözecektir.
Değişken bildiriminin bir parçası olarak değişken başlatma
Değişken bildiriminin bir parçası olarak başlatmak
valueiçin kodunuzu aşağıdaki gibi güncelleştirin:bool flag = true; int value = 0; if (flag) { Console.WriteLine($"Inside the code block: {value}"); } value = 10; Console.WriteLine($"Outside the code block: {value}");Bu kod, değişken bildiriminizin bir parçası olarak başlatarak
value"atanmamış yerel değişken" derleme hatasını giderir.Kodunuzu kaydetmek ve çalıştırmak için Visual Studio Code'u kullanın.
Şimdi uygulamayı çalıştırdığınızda aşağıdaki çıkışı gördüğünüze dikkat edin:
Inside the code block: 0 Outside the code block: 10
Derleyicinin kodunuzu yorumlamasını inceleme
C# derleyicisi, çalışma zamanı hatalarından kaçınmanıza yardımcı olmak için Visual Studio Code Düzenleyicisi'nde ve derleme işlemi sırasında kodunuzu analiz eder. Ancak, derleyici kodunuzu her zaman sizin yaptığınız gibi yorumlamayabilir.
Aynı amaca hizmet ediyor gibi görünen aşağıdaki iki kod örneğini göz önünde bulundurun:
// 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}");
Bu iki örneğin her zaman aynı sonucu vermesi gerektiğini hissedebilirsiniz, ancak C# derleyicisi bu iki kod örneğini farklı yorumlar.
İlk kod örneği için derleyici, veya flagdeğerine true atanabilecek bir Boole değişkeni olarak yorumlarfalse. Derleyici, ise flagfalsevalue, ikinci Console.WriteLine() yürütülürken başlatılmayacağı sonucuna varıyor. Temelde derleyici aşağıdaki iki kod yürütme yolunun mümkün olduğunu düşünür:
// path when flag = true
int value;
value = 10;
Console.WriteLine($"Inside the code block: {value}");
Console.WriteLine($"Outside the code block: {value}");
VE
// path when flag = false
int value;
Console.WriteLine($"Outside the code block: {value}");
Derleyici ikinci yolu bir olasılık olarak değerlendirdiğinden (kod örneği 1 için), derleme işlemi sırasında bir hata iletisi oluşturur. Ayrıca, Visual Studio Code'daki kod Düzenleyicisi altında (kod bloğunun altında) kırmızı dalgalı bir çizgi value görüntüleyerek sizi bu sorunla ilgili uyarır.
İkinci kod örneği için, complier deyimi kod bloğunun içeriğinin if her zaman yürütüleceği sonucuna varıyor (true her zaman true). Derleyici, ikinci kod örneğini aşağıdaki gibi tek bir yürütme yoluna sahip olacak şekilde yorumladığı için derleme hatası oluşturmaz:
int value;
value = 10;
Console.WriteLine($"Inside the code block: {value}");
Console.WriteLine($"Outside the code block: {value}");
Özet
Burada kod blokları hakkında hatırlanması gereken birkaç önemli nokta vardır:
- Bir kod bloğunun içinde bir değişken bildirdiğinizde, değişkenin görünürlüğü bu kod bloğu için yereldir ve bu değişkene kod bloğunun dışından erişilemez.
- Bir değişkenin bir kod bloğunun içinde ve dışında görünür olmasını sağlamak için, değişkeni kod bloğundan önce (kod bloğunun dışında ve üstünde) bildirmeniz gerekir.
- Kodunuz bunlara erişmeye çalışmadan önce değişkenlerin başlatıldığından emin olun (tüm olası kod yürütme yolları için).