Yükleniyor...

Kapsam

mark adlı, bir parametreli bir metot yazın: static void mark(int n). Süslü parantezlerin içinde bu parametreyi Console.WriteLine(n); ile yazın. Main içinden mark(4); çağırın. Ekran bir satır göstermelidir: 4. Ad n yalnızca mark içinde vardır. Main içinden n yazmayı denerseniz derleme reddeder. Bu sınır — bir metodun hangi adları gördüğü — bu sayfanın öğrettiği şeydir. Genel sınıf adını Pine tutun.

Metot içinde kalan adlar

Aşırı yükleme sayfasında birkaç paint metodu bir adı paylaşmış ama ayrı parametre listeleri tutmuştu. Burada odak daha dardır: bir metot, bir parametre adı ve o adın nerede görünebileceği. Parametre, onu bildiren metoda ait bir addır. O metodun süslü parantezlerinin dışında ad yoktur.
Pine dosyasını açın. Sınıf adı Pine kalır. Bu sayfa türü yeniden adlandırmaz. Hâlâ Main’de tuttuğunuz her şey bir paint demosuysa onu silin. Artakalan her twice’ı silin. Her ReadLine satırını silin. Tutacağınız dosyada yazı bekleyişi yoktur.
Main dışında, yine sınıf süslü parantezlerinin içinde static void mark(int n) yazın. Gövde bir yazma satırı tutar: Console.WriteLine(n);. Bu sayfada void tutun. Görünürlüğe bakıyorsunuz, dönüş değerlerine değil. Çalıştırmadan önce dosyayı kaydedin. İlk tam program sonraki kutudadır.

Tutacağınız dosya

Bu, ilk çalıştırdığınız sürümdür. Main çağrıyı tutar. mark, n kullanan yazma satırını tutar.

mark writes its parameter

csharp
using System;

public class Pine
{
    public static void Main()
    {
        mark(4);
    }

    static void mark(int n)
    {
        Console.WriteLine(n);
    }
}

Yukarıdan okuyun. using System; kısa adları hazırlar. public class Pine türü adlandırır. public static void Main() çalışma zamanının başladığı yerdir. mark(4) çağrısı 4’ü parametre n’ye gönderir. mark içinde Console.WriteLine(n) değeri 4 yazar. mark bitince ad n de biter. Main hiç n adı tutmadı. Sayı 4 çağrıdan değer olarak geçti. Ad n Main’e taşınmadı. Ekranda bir satır: 4.

dotnet run ile çalıştırın. Program bir satır yazar ve durur. Yazmanızı beklemez. dotnet run bekliyorsa dosyada hâlâ ReadLine vardır. O satırı silin ve mark(4); ile yukarıdaki mark metodunu tutun. Ekran 4 gösterir. Ekran ok gösteriyorsa artakalan bir paint("ok") çağrısı hâlâ çalışıyordur. Ekran n harfini gösteriyorsa yazma satırı tırnaklıdır: Console.WriteLine("n");. Yanlış satır gösteren bir ekran için .NET SDK’yı yeniden kurmayın.

Bir tam çalıştırmayı sırayla yürüyün. C# Main’de başlar. mark(4) çağrısı 4’ü parametre n’ye gönderir. mark içinde WriteLine(n) değeri 4 yazar. mark bitince ad n de biter. Main hiç n adı tutmadı. Sayı 4 çağrıdan değer olarak geçti. Ad n Main’e taşınmadı.
Çağrıdan sonra Main içine Console.WriteLine(n); eklerseniz derleme n adını bulamadığını bildirir. Bu hata dersin çalışmasıdır: n hiç Main’de bildirilmedi. O satırı Main’den kaldırarak düzeltin ya da orada yerele ihtiyaç varsa başka bir ad bildirin. mark parametresinin kendi kendine Main’de belirmesini beklemeyin.

Parametrenin yanında yerel bir ad

mark içinde parametre olmayan yeni bir ad da bildirebilirsiniz. Bu yerel ad yalnızca mark’ın süslü parantezleri arasında yaşar. Yaygın bir yeni başlayan umudu, Main’de bildirilen bir adın sınıftaki her metotta otomatik görünür olmasıdır. Bu şekilde öyle değildir. Main’de int room = 4; varsa ve mark onu almadan room yazmaya çalışırsa derleme mark içinde room’u bulamaz. Düzeltme değeri geçirmektir: mark(room); ve mark hâlâ mark(int n) olarak bildirilir.

Main yerelini mark’a geçirin

Main içinde int room = 4; bildirin. mark(room); çağırın. mark içinde n yazmaya devam edin. Ekran hâlâ 4 gösterir. Main’deki yerel ad room’dur. mark’taki parametre adı n’dir. Farklı yerlerde farklı adlardır. Seyahat eden değer 4’tür.

pass room into mark

csharp
using System;

public class Pine
{
    public static void Main()
    {
        int room = 4;
        mark(room);
    }

    static void mark(int n)
    {
        Console.WriteLine(n);
    }
}

Bu ikinci dosyadır. Aynı görünürlüğü Main’de bir yerelle öğretir. dotnet run çalıştırın. Hâlâ bir satır görürsünüz: 4. room’u 9 yapıp metot gövdesine dokunmazsanız ekran 9 gösterir. Metot hâlâ n’ye gelen değeri yazar. Main’e Console.WriteLine(room); eklerseniz Main de room yazabilir — o ad oraya aittir. Main hâlâ n yazamaz. room şeklini gördükten sonra saklamak istediğiniz şekil tek çağrıysa tutulan dosyayı geri koyun: Main’de mark(4);.
mark kendi yerelisini bildirirse — örneğin süslü parantezlerin içinde int tag = 1; — o tag Main için görünmezdir. Main’de Console.WriteLine(tag); denemesi, Main’den n yazmanın başarısız olduğu aynı nedenle düşer. mark’ın süslü parantezleri, içinde bildirilen adlar için bir duvardır.

Duvarın koruduğu şey

Ayrımı sade sözlerle okuyun. Main’de bildirilen adlar, değerlerini bir çağrıya geçirmedikçe Main’de kalır. mark’ta bildirilen adlar — parametreler ve yereller — mark’ta kalır. Çağrı değerleri taşır, adların kendisini değil. Önceki sayfadaki aşırı yükleme başka bir beceridir: ortak bir metot adıyla birkaç metot. Kapsam, bir değişken veya parametre adının kaynakta nerede görünebileceğiyle ilgilidir.
Artakalan bir paint demosu aynı dosyada oturup Main hâlâ paint("ok") çağırıyorsa ekranı karıştırabilir. Main’i test ettiğiniz mark çağrısına kadar temizleyin. mark’ı Main’in süslü parantezlerinin içine yuvalamayın. Metotlar sınıfın içinde, Main’in yanında durur.
Main’de Console.WriteLine("n"); yazmak tırnak içindeki n harfini yazar. Parametreyi yazmaz. Çağrıdan gelen değeri istediğinizde Console.WriteLine(n)’yi mark içinde tutun. Başlık hâlâ mark(int n) iken boş parantezli mark(); düşer — çağrı bir int göndermelidir, 4 gibi bir sabit ya da room gibi bir yerel.

mark(int n) yazabilir, o metot içinde n yazabilir ve n’yi Main’in dışında tutabilirsiniz. Main’de room bildirip room’u mark’a geçirebilirsiniz. Ekran çağrıdan geçen değeri gösterir. Adlar süslü parantezlerden kendi başlarına sızmaz. Sonraki sayfa recursion’dır; orada bir metot durma koşulu zinciri bitirene kadar kendini daha küçük bir argümanla çağırır.

Ekran geçen değeri tutar

Tutacağınız dosya Main mark(4); çağırınca 4 yazar. Ad n, mark içindeki yazma satırındadır ve harf n tırnaklamadıkça ekranda basılı etiket olarak çıkmaz. mark’ı Main içine yuvalamak bu dersin kurduğu şekil değildir.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
6
Sorular
🎯
70%
Geçmek İçin
♾️
∞
Süre
🔄
∞
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek