พิจารณาสถานการณ์ทั่วไปดังต่อไปนี้:
if(myObject == null) {
myObject = new myClass();
}
ฉันสงสัยว่าความคิดของการแทนที่ต่อไปนี้โดยใช้ตัวดำเนินการ null รวมกัน:
myObject = myObject ?? new myClass();
ฉันไม่แน่ใจว่าควรใช้แบบฟอร์มที่สองหรือไม่ ดูเหมือนว่าจะเป็นชวเลขที่ดี แต่การmyObject = myObject
สร้างที่จุดเริ่มต้นดูเหมือนจะเป็นกลิ่นโค้ดเล็กน้อย
นี่เป็นสิ่งที่สมเหตุสมผลที่ต้องทำหรือมีชวเลขที่ดีกว่าที่ฉันทำหายไปหรือไม่? หรืออาจจะ "มันเป็นสามบรรทัดเอาเลย!"?
แก้ไข: ดังที่ได้กล่าวไว้บางทีการเรียกสิ่งนี้ว่าสถานการณ์โดยทั่วไปนั้นเป็นเรื่องที่เกินความจริง ฉันมักจะพบว่าฉันพบสถานการณ์นี้เมื่อฉันดึงข้อมูลเอนทิตี้จากฐานข้อมูลที่มีคุณสมบัติประเภทการอ้างอิงลูกที่อาจหรืออาจจะไม่ได้บรรจุ:
myClass myObject = myClassService.getById(id);
myObject.myChildObject = myObject.myChildObject ?? new myChildClass();
MyClass
ควรให้public static readonly
สมาชิกของEmpty
ค่าประเภทของมัน ดูString.Empty
ใน MSDN
??=
โอเปอเรเตอร์หรือ