คุณเพิ่มค่าว่างหรือไม่ ???
int? a = null;
a++;
คำสั่งนี้หมายถึงnull++คือ null + 1
ตามเอกสารนี้ประเภทที่เป็นโมฆะสามารถแสดงช่วงของค่าที่ถูกต้องสำหรับชนิดค่าพื้นฐานบวกค่าว่างเพิ่มเติม Nullable ออกเสียงว่า "Nullable of Int32" สามารถกำหนดค่าใดก็ได้ตั้งแต่ -2147483648 ถึง 2147483647 หรือ สามารถกำหนดค่า null ได้
ที่นี่คุณกำลังเพิ่มค่า null จากนั้นมันจะกลายเป็นค่าว่างไม่ใช่ 0 หรือจำนวนเต็มอื่น ๆ
ทำไมพิมพ์ว่างแทนที่จะเป็นข้อผิดพลาด ??
เมื่อคุณพิมพ์ประเภท nullable ด้วยค่า null มันจะพิมพ์ว่างแทนข้อผิดพลาดเนื่องจากคุณกำลังพิมพ์ค่าตัวแปร ie ของตำแหน่งหน่วยความจำ ซึ่งอาจเป็นค่าว่างหรือจำนวนเต็มก็ได้
แต่เมื่อคุณพยายามพิมพ์ null โดยใช้Console.WriteLine(null)ค่า null ไม่ใช่ตัวแปรดังนั้นจึงไม่อ้างถึงตำแหน่งหน่วยความจำใด ๆ "NullReferenceException"และด้วยเหตุนี้มันจะช่วยให้เกิดข้อผิดพลาด
แล้วคุณจะพิมพ์จำนวนเต็มโดยใช้อย่างไรConsole.WriteLine(2);??
ในกรณีนี้ 2 จะอยู่ในหน่วยความจำที่ตำแหน่งชั่วคราวและตัวชี้จะชี้ไปที่ตำแหน่งหน่วยความจำที่จะพิมพ์
++,+=และ+สายพันธุ์ได้ยก ดังนั้นงบa++;,a += 1;และa = a + 1;ได้รับอนุญาตทั้งหมด แต่ละผลิตnull(ไม่มีข้อยกเว้นโยน) ถ้าเป็นครั้งแรกanull