คุณสมบัติส่วนตัวมีประโยชน์อย่างมากในการห่อหุ้มพฤติกรรมของสิ่งต่าง ๆ ที่อยู่ในชั้นเรียนของคุณ เพียงเพราะพวกเขาเป็นส่วนตัวไม่ได้หมายความว่าคุณไม่ควรใช้ประโยชน์จากน้ำตาลทรายที่มีคุณสมบัติให้คุณ
ตัวอย่างที่ให้มานั้นเป็นตัวอย่างที่ไม่ดี หม้อไอน้ำและตัวตั้งค่าคุณสมบัติหม้อไอน้ำแบบนี้มักเป็นความคิดที่ไม่ดี หากคุณใช้ C # 3.0 หรือใหม่กว่าคุณสมบัติอัตโนมัติเป็นแนวคิดที่ดีกว่ามาก:
private string Whatever { get; set; };
นี่คือสั้นกว่าสะอาดกว่าและอ่านได้มากขึ้น ในความเป็นจริงมันแทบจะนานกว่าการประกาศตัวแปรสำรอง
สิ่งสำคัญที่สุดคือแม้ว่าคุณสมบัติอัตโนมัติสามารถแปลงเป็นคุณสมบัติเต็มรูปแบบได้ตลอดเวลาโดยไม่ต้องเปลี่ยนความหมายของส่วนที่เหลือของโปรแกรม! ดังนั้นหากคุณต้องการเพิ่มการตรวจสอบหรือการจัดการข้อผิดพลาดคุณสามารถทำได้อย่างง่ายดาย
เพราะฉันคิดเสมอว่ามันเป็นความอัปยศที่คุณไม่มีคุณสมบัติอ่านอย่างเดียวบังคับใช้ความสามารถในการเขียนค่าในตัวสร้าง (ฉันชอบประเภทที่ไม่เปลี่ยนรูป ) แต่สิ่งนี้ถูกเพิ่มใน C # 6.0เป็น "คุณสมบัติเริ่มต้นของคุณสมบัติอัตโนมัติ" ซึ่งช่วยให้คุณทำ:
private string Whatever { get; } = ...;
หรือ
private string Whatever { get; };
พร้อมด้วย
Whatever = ...;
ในตัวสร้าง