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
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.
Nasıl çapraz etki alanı JavaScript ile...
.debug yeni etki alanı için tüm sayfal...
Çapraz etki alanı AJAX çağrısı...
Raylar 3 session_store etki alanı :tüm...
Nasıl Facebook tuval sayfalarda iframe...