เหตุใดเขตข้อมูลส่วนตัวจึงเป็นประเภทส่วนตัวไม่ใช่เช่นนั้น
ใน C # (และภาษาอื่น ๆ อีกมากมาย) การเข้าใช้ฟิลด์ส่วนตัวของอินสแตนซ์อื่นประเภทเดียวกันนั้นถูกต้องตามกฎหมาย ตัวอย่างเช่น: public class Foo { private bool aBool; public void DoBar(Foo anotherFoo) { if (anotherFoo.aBool) ... } } เนื่องจากข้อกำหนดC # (ส่วน 3.5.1, 3.5.2) ระบุว่าการเข้าถึงฟิลด์ส่วนตัวอยู่ในประเภทไม่ใช่อินสแตนซ์ ฉันกำลังคุยเรื่องนี้กับเพื่อนร่วมงานและเรากำลังพยายามหาเหตุผลว่าทำไมมันถึงใช้งานได้ (แทนที่จะ จำกัด การเข้าถึงอินสแตนซ์เดียวกัน) อาร์กิวเมนต์ที่ดีที่สุดที่เราสามารถหาได้คือการตรวจสอบความเท่าเทียมกันซึ่งคลาสอาจต้องการเข้าถึงฟิลด์ส่วนตัวเพื่อกำหนดความเท่าเทียมกันกับอินสแตนซ์อื่น มีเหตุผลอื่นอีกไหม? หรือเหตุผลทองบางอย่างที่หมายความว่ามันต้องทำงานอย่างนี้หรือบางสิ่งจะเป็นไปไม่ได้อย่างสมบูรณ์?