ฉันเพิ่งรู้ว่าการสร้างคุณสมบัติ C # สามารถใช้กับโมดิฟายเออร์ส่วนตัวได้ :
private string Password { get; set; }
แม้ว่านี่จะเป็นที่น่าสนใจในทางเทคนิค, ฉันไม่สามารถจินตนาการเมื่อผมจะใช้มันตั้งแต่ข้อมูลส่วนตัวที่เกี่ยวข้องกับการแม้กระทั่งพิธีน้อย :
private string _password;
และฉันไม่สามารถจินตนาการได้ว่าเมื่อใดที่ฉันจะต้องได้รับภายในแต่ไม่ได้ตั้งค่าหรือตั้งค่าแต่ไม่ได้รับข้อมูลส่วนตัว:
private string Password { get; }
หรือ
private string Password { set; }
แต่อาจจะมีกรณีการใช้งานกับคลาสที่ซ้อนกัน / สืบทอดหรืออาจเป็นที่ / ชุด / อาจมีตรรกะแทนเพียงแค่คืนค่าของคุณสมบัติแม้ว่าฉันจะมีแนวโน้มที่จะรักษาคุณสมบัติที่เรียบง่ายอย่างเคร่งครัดและให้วิธีการที่ชัดเจนทำตรรกะใด ๆ GetEncodedPassword()
เช่น
ไม่มีใครใช้คุณสมบัติส่วนตัวใน C # ด้วยเหตุผลใดก็ตามหรือเป็นเพียงหนึ่งในโครงสร้างทางเทคนิคที่เป็นไปได้ แต่ไม่ค่อยมีคนใช้จริง
ภาคผนวก
คำตอบที่ดีอ่านผ่านพวกเขาฉันคัดการใช้งานเหล่านี้สำหรับคุณสมบัติส่วนตัว:
- เมื่อฟิลด์ส่วนตัวจำเป็นต้องโหลดอย่างเกียจคร้าน
- เมื่อเขตข้อมูลส่วนตัวต้องการตรรกะเพิ่มเติมหรือเป็นค่าที่คำนวณได้
- เนื่องจากฟิลด์ส่วนตัวอาจเป็นเรื่องยากที่จะตรวจแก้จุดบกพร่อง
- เพื่อ "นำเสนอสัญญากับตัวเอง"
- เพื่อแปลงภายใน / ทำให้คุณสมบัติที่เปิดเผยเป็นส่วนหนึ่งของการทำให้เป็นอนุกรมง่ายขึ้น
- ล้อมตัวแปรส่วนกลางที่จะใช้ในชั้นเรียนของคุณ