คุณเพิ่มค่าว่างหรือไม่ ???
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
(ไม่มีข้อยกเว้นโยน) ถ้าเป็นครั้งแรกa
null