UPDATE: คำถามนี้เป็นเรื่องของการบล็อกของฉันในกันยายน 2014 ขอบคุณสำหรับคำถามที่ยอดเยี่ยม!
มีการถกเถียงกันอย่างมากในคำถามนี้แม้จะอยู่ในทีมคอมไพเลอร์เองก็ตาม
ก่อนอื่นก็ควรที่จะเข้าใจกฎ เป็นสมาชิกคนหนึ่งของประชาชนในชั้นเรียนหรือ struct เป็นสมาชิกที่สามารถเข้าถึงได้กับสิ่งใดที่สามารถเข้าถึงชนิดที่มี ดังนั้นสมาชิกสาธารณะของคลาสภายในจึงมีประสิทธิภาพภายใน
ดังนั้นในขณะนี้เมื่อมีคลาสภายในสมาชิกที่คุณต้องการเข้าถึงในแอสเซมบลีควรถูกทำเครื่องหมายเป็นสาธารณะหรือภายใน
ความคิดเห็นของฉันคือ: ทำเครื่องหมายสมาชิกเช่นสาธารณะ
ฉันใช้ "สาธารณะ" เพื่อหมายถึง "สมาชิกรายนี้ไม่ใช่รายละเอียดการใช้งาน" สมาชิกที่ได้รับความคุ้มครองคือรายละเอียดการปฏิบัติ มีบางอย่างเกี่ยวกับเรื่องนี้ที่จะต้องใช้ในการทำงานในชั้นเรียนที่ได้รับ สมาชิกภายในคือรายละเอียดการนำไปปฏิบัติ สิ่งอื่นภายในแอสเซมบลีนี้ต้องการสมาชิกเพื่อให้ทำงานอย่างถูกต้อง สมาชิกสาธารณะกล่าวว่า "สมาชิกคนนี้เป็นตัวแทนของกุญแจฟังก์ชั่นที่จัดทำเอกสารโดยวัตถุนี้"
โดยพื้นฐานแล้วทัศนคติของฉันคือ: สมมติว่าฉันตัดสินใจที่จะทำให้คลาสภายในนี้เป็นคลาสสาธารณะ เพื่อที่จะทำเช่นนั้นฉันต้องการที่จะเปลี่ยนแปลงสิ่งเดียว : การเข้าถึงของชั้นเรียน ถ้าการเปลี่ยนคลาสภายในเป็นคลาสสาธารณะหมายความว่าฉันต้องเปลี่ยนสมาชิกภายในเป็นสมาชิกสาธารณะดังนั้นสมาชิกคนนั้นก็เป็นส่วนหนึ่งของพื้นที่สาธารณะของชั้นเรียนและควรเป็นสาธารณะตั้งแต่แรก
คนอื่นไม่เห็นด้วย มีภาระผูกพันที่บอกว่าพวกเขาต้องการให้สามารถมองเห็นการประกาศของสมาชิกและรู้ได้ทันทีว่าจะถูกเรียกจากรหัสภายในเท่านั้นหรือไม่
น่าเสียดายที่มันไม่ได้ผลดีเสมอไป ตัวอย่างเช่นชั้นภายในที่ดำเนินการอินเตอร์เฟซที่ภายในยังคงต้องมีสมาชิกในการดำเนินการทำเครื่องหมายว่าเป็นที่สาธารณะเพราะพวกเขาเป็นส่วนหนึ่งของพื้นผิวสาธารณะของชั้นเรียน