ตัวดำเนินการรวมค่า null ใน c # อนุญาตให้คุณย่อรหัสได้
if (_mywidget == null)
return new Widget();
else
return _mywidget;
ลงไป:
return _mywidget ?? new Widget();
ฉันพบว่าตัวดำเนินการที่มีประโยชน์ที่ฉันต้องการใน C # จะเป็นอันที่อนุญาตให้คุณส่งคืนคุณสมบัติของวัตถุหรือค่าอื่น ๆ ถ้าวัตถุนั้นเป็นโมฆะ ดังนั้นฉันต้องการแทนที่
if (_mywidget == null)
return 5;
else
return _mywidget.Length;
ด้วย:
return _mywidget.Length ??! 5;
ฉันอดไม่ได้ที่จะคิดว่าต้องมีเหตุผลบางอย่างที่ผู้ดำเนินการรายนี้จะไม่มีอยู่จริง มันเป็นกลิ่นรหัสหรือไม่? มีวิธีที่ดีกว่าในการเขียนนี้หรือไม่? (ฉันรู้ถึงรูปแบบวัตถุ null แต่ดูเหมือนว่าจะใช้เกินขีดเพื่อแทนที่รหัสสี่บรรทัดนี้)
??!
เป็นผู้ประกอบการใน C ++ :-)