SORU
12 Ocak 2010, Salı


C# Değişken Etki Alanı

if(true)
{
    string var = "VAR";
}

string var = "New VAR!";

Bu neden olur:

Hata 1 yerel Bir değişken adı 'var' bu kapsamda ilan edilemez bir farklı verecekti çünkü anlamı 'var', ki zaten kullanılan bir 'çocuk' belirtmek için kapsamında başka bir şey.

Hiçbir şey gerçekten yıkıcı bir dünya, ama bu tamamen yanlış değil mi? Adam bir geliştirici ve eğer ilk beyan farklı bir kapsamda olmalıdır eğer merak ediyoruz, böylece ikinci beyan edemiyor ilk bildirimi ile müdahale.

Neden C# kapsamları iki? ayırt edemiyor Kapsam yöntem geri kalanından tamamen ayrı DEĞİLSE ilk gerekir?

Yapamıyorum hata iletisini ilk var ikinci kapsam ilgisi yoktur, çünkü yanlış, bu yüzden dışarıdan gelen çağrı var.

CEVAP
12 Ocak 2010, Salı


Burada sorun, büyük ölçüde iyi uygulama ve istenmeyen hatalara karşı önleyici biridir. Kuşkusuz, C# derleyicisiolabilir teorik olarakkapsamları arasındaki çatışma burada yok olacak şekilde tasarlanmalıdır. Bu ancak gördüğüm kadarıyla az kazanmak için çok çaba olacaktır.

Eğer ebeveyn kapsamında var beyanı olsaydı düşününönceif ifadesi, unresolvable adlandırma bir çatışma olacak. Derleyici sadece aşağıdaki iki dava arasında ayrım yapmaz. Analiz yapılırtamamen dayalı kapsamve beklediğiniz gibi bildirimi/kullanım değil sipariş.

Teorik olarak kabul edilebilir (ama yine de geçersiz kadarıyla C# ile ilgili olarak):

if(true)
{
    string var = "VAR";
}

string var = "New VAR!";

ve kabul edilemez bir üst değişken gizleme olacağından ():

string var = "New VAR!";

if(true)
{
    string var = "VAR";
}

hem de tam tedavi değişkenler açısından aynı ve kapsamları.

Şimdi, sadece değişkenlerden biri farklı bir isim veremezsiniz neden bu secenario herhangi bir gerçek sebep var mı? Gerçek değişkenler gerçekten bu bir sorun olarak görmüyorum yani var, " değil (umarım) sanırım. Eğer hala aynı değişken adını tekrar kullanma konusunda kararlı iseniz, sadece kardeş kapsamları koyun:

if(true)
{
    string var = "VAR";
}

{
    string var = "New VAR!";
}

Ancak bu derleyici için geçerli olsa da, kod, okurken karışıklık bir miktar yol açabilir, hemen hemen her durumda buna karşı tavsiye ediyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • PoreoticsHD

    PoreoticsHD

    22 NİSAN 2010
  • SegaAmerica

    SegaAmerica

    5 Mart 2008