ฉันคิดว่าส่วนที่สับสนคือถ้าคุณเขียนint Property { get; set; }
ในชั้นเรียนแล้วมันเป็นคุณสมบัติอัตโนมัติพร้อมเขตข้อมูลสำรองโดยปริยาย
แต่ถ้าคุณเขียนสิ่งเดียวกันในอินเทอร์เฟซมันไม่ใช่คุณสมบัติอัตโนมัติมันเพิ่งประกาศว่าคุณสมบัตินั้นเป็นส่วนหนึ่งของอินเทอร์เฟซและประเภทใด ๆ ที่ใช้อินเทอร์เฟซนั้นต้องมีคุณสมบัตินั้น (เป็นคุณสมบัติอัตโนมัติหรือไม่ ) แต่มันไม่ได้สร้างเขตข้อมูลสำรอง
วิธีหนึ่งที่จะเห็นความแตกต่างคือการเขียนint Property { get; }
: สิ่งนี้ใช้ได้ในอินเตอร์เฟสและประกาศคุณสมบัติที่มีเพียงตัวรับ แต่ไม่มีตัวตั้งค่า แต่มันจะไม่รวบรวมในชั้นเรียน (เว้นแต่ว่าคุณกำลังใช้ C # 6.0) เนื่องจากคุณสมบัติอัตโนมัติจะต้องมี setter