Aşağıdaki kod, "Bu" adlı bir yerel değişken, "çocuk" kapsamında zaten kullanılan 'st' için farklı bir anlam vereceği için bu kapsamda bildirilemez. "Child Scope & CS0136
string preParent = "";
{
string preParent = "Should fail cause we change the meaning";
}
biz aşağıdakileri yapmayı olsun: Bu işe yaramaz anlıyorum
var l = new List<string>();
l.Find(st => st.EndsWith("12"));
string st = "why this fails?";
": adı 'postParent' akımının içinde yok CS0103 başka bir şey belirtmek için ":
{
string postParent=string.Empty;
}
postParent = "Should this work?";
Elde edemediğim şey, derleyicinin postParent'in kapsam dahilinde olmadığını görecek kadar akıllı olmasının nedeni, ancak bir çocuk kapsamı içinde kullanılan değişkenle aynı ada sahip yeni bir değişken tanımlamama izin vermemesidir (Bu noktada açıkça kapsam dışıdır).
Değişkeni kullanmama izin vermeyi reddederek derleyici basit zorlama kapsamı var mı? Eğer öyleyse bu mantıklı.
===========
Düzenlendi:
ben ne de ilginç buluyorum bunu, tek yöntemde iki çocuk kapsamları içinde aynı değişkene sahip olabilir nasıl olduğunu tahmin Bu geçerlidir:
{
string thisWorks= string.Empty;
}
{
string thisWorks= "Should this work?";
}
sadece sürece (bir ağaç olarak kapsam bakarsak) aynı düzeydedir aynı adı taşıyan iki değişken olabilir bu biraz merak ediyorum. Bu, mantıklıdır çünkü aynı isimde aynı sınıfın iki yönteminde yerel değişkenlere sahip olabilirsiniz.
Sadece postParent değişkenine izin vermezken derleyicinin bunu ayırt edebilmesine ve buna izin vermesine şaşırdım. Bu teknik bir sınırlama mı yoksa tasarım kararı mıydı? Ben gerçekten bu yüzden almak için çalışıyorum ,-)
Neden 5 aydan sonra düşüş var? – JoshBerke