SORU
15 ŞUBAT 2012, ÇARŞAMBA


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
15 ŞUBAT 2012, ÇARŞAMBA


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ı.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gan Eden Productions

    Gan Eden Pro

    11 HAZİRAN 2011
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008
  • Xcode programming tutorials

    Xcode progra

    17 EYLÜL 2006