Neden bir iç sınıf içinde ortak bir yöntem kullanmak?
Bu gibi projelerimizin bir kod var:
internal static class Extensions
{
public static string AddFoo(this string s)
{
if (!string.IsNullOrEmpty(s)) return s "Foo";
return "Foo";
}
}
"Daha kolay bir tür kamu sonra? yapmak için" bundan başka yapacak hiçbir açık sebep
Sadece çok garip kenar durumlarda (Silverlight yansıma) ya da değil hiç önemli sanıyorum.
CEVAP
GÜNCELLEME: Bu soru the subject of my blog in September 2014 oldu. Harika soru için teşekkür ederiz!
Hatta derleyici takım kendi içinde bu soru üzerinde ciddi tartışmalar var.
Öncelikle, bilge kurallarını anlamak için. Bir sınıf veya yapı ortak üye erişilebilen bir üyesidirher şeyi içeren bu tür erişebilir. Yani bir iç sınıf ortak üye etkili iç.
Şimdi, bir iç sınıf göz önüne alındığında, erişmek istediğiniz üyeleri Meclisi kamu veya dahili olarak işaretlenmiş olmalıdır?
Benim görüşüm: genel olarak aile üyeleri.
Kullandığım "halk" demek için "bu üye, uygulama ayrıntı değildir". Korunan bir üyesi uygulama ayrıntı; türetilmiş bir sınıf çalışması için gerekli olacak bir şeyler vardır. Dahili bir üyesi uygulama ayrıntı; başka bir şey bu montaj için iç düzgün çalışması için üyeye ihtiyacı var. Ortak üye "bu üye, anahtar işlevi bu nesne tarafından sağlanan belgelenmiş temsil eder." diyor
Temelde, benim tavrım budur: ortak bir sınıf içine bu iç sınıf yapmaya karar verdim sanırım. Bunu yapmak için, değiştirmek istiyorumtam olarak bir şey: class erişilebilirlik. Eğer ortak bir sınıf içine bir iç sınıf dönüm de ortak üye ... dahili bir üye çevirmek zorunda anlamına geliyorsa, o zaman o üye bir parçasıydıkamu yüzey alanısınıf, ve ilk etapta kamu olmalıydı.
Diğer insanlar aynı fikirde değil. İç kodundan üye Bildirgesi bakışta ve hemen sadece adı olacak olup olmadığını bilmek istediklerini söyleyen bir grup var.
Ne yazık ki, bu her zaman güzel olmuyor; örneğin, bir iç arabirim uygulayan bir iç sınıf hala uygulama üyeleri genel olarak, çünkü işaretli olmalısınıfın ortak yüzey parçası.
Olamaz bir iç sınıf içinde nihai olmay...
Neden getelementbyıd gibi bir WordPres...
Neden hashCode içinde bir asal sayı ku...
Nasıl bir WordPress kullanmak içinde b...
Bu kullanmak için doğru yolu Nedir `.T...