UPDATE: Pertanyaan ini adalah topik blog saya pada bulan September 2014 . Terima kasih atas pertanyaannya!
Ada banyak perdebatan tentang pertanyaan ini bahkan di dalam tim penyusun itu sendiri.
Pertama, adalah bijaksana untuk memahami aturan. Anggota publik dari kelas atau struct adalah anggota yang dapat diakses oleh apa pun yang dapat mengakses tipe yang mengandung . Jadi anggota publik dari kelas internal secara efektif internal.
Jadi sekarang, dengan kelas internal, haruskah anggotanya yang ingin Anda akses di majelis ditandai sebagai publik atau internal?
Pendapat saya adalah: tandai anggota tersebut sebagai publik.
Saya menggunakan "publik" yang berarti "anggota ini bukan detail implementasi". Anggota yang dilindungi adalah detail implementasi; ada sesuatu tentang hal itu yang akan dibutuhkan untuk membuat pekerjaan kelas yang diturunkan. Anggota internal adalah detail implementasi; sesuatu yang lain di dalam majelis ini membutuhkan anggota untuk bekerja dengan benar. Anggota publik mengatakan "anggota ini mewakili kunci, fungsi terdokumentasi yang disediakan oleh objek ini."
Pada dasarnya, sikap saya adalah: seandainya saya memutuskan untuk membuat kelas internal ini menjadi kelas publik. Untuk melakukan itu, saya ingin mengubah satu hal : aksesibilitas kelas. Jika mengubah kelas internal menjadi kelas publik berarti saya harus juga mengubah anggota internal menjadi anggota publik, maka anggota itu adalah bagian dari area permukaan publik dari kelas tersebut, dan itu seharusnya sudah menjadi publik di tempat pertama.
Orang lain tidak setuju. Ada kontingen yang mengatakan bahwa mereka ingin dapat melirik deklarasi anggota dan segera tahu apakah itu akan dipanggil hanya dari kode internal.
Sayangnya, itu tidak selalu berhasil dengan baik; misalnya, kelas internal yang mengimplementasikan antarmuka internal masih harus memiliki anggota pelaksana yang ditandai sebagai publik, karena mereka adalah bagian dari permukaan publik kelas .