เมื่อฉันประกาศintว่าเป็นโมฆะ
int? i=null;
ไม่iนี่กลายเป็นชนิดการอ้างอิงหรือไม่?
เมื่อฉันประกาศintว่าเป็นโมฆะ
int? i=null;
ไม่iนี่กลายเป็นชนิดการอ้างอิงหรือไม่?
คำตอบ:
ไม่ nullable เป็นโครงสร้าง สิ่งที่เกิดขึ้นคือโครงสร้างที่ว่างเปล่ามีสองค่า:
intสำหรับint?, DateTimeสำหรับDateTime?ฯลฯ )HasValueคือคุณสมบัติ)เมื่อคุณตั้งค่าของชนิดข้อมูลโครงสร้างHasValueจะเปลี่ยนเป็นจริง
จากประเภท Nullable (คู่มือการเขียนโปรแกรม C #) :
ประเภท Nullable คืออินสแตนซ์ของ System.Nullable struct
และ
ประเภท Nullable แสดงถึงตัวแปรประเภทค่าที่สามารถกำหนดค่าของ null ได้ คุณไม่สามารถสร้างประเภทที่เป็นโมฆะได้ตามประเภทการอ้างอิง (ประเภทการอ้างอิงรองรับค่า null แล้ว)
ดังนั้นจึงไม่ใช่ประเภทอ้างอิง
ประเภท Nullable ไม่ใช่ประเภทค่าหรือประเภทอ้างอิง คล้ายกับประเภทค่ามากกว่า แต่มีคุณสมบัติบางอย่างของประเภทการอ้างอิง
ธรรมชาติประเภท nullable nullอาจจะกำหนดให้ นอกจากนี้ประเภทที่เป็นโมฆะไม่สามารถตอบสนองstructข้อ จำกัดทั่วไปได้ นอกจากนี้เมื่อคุณใส่กล่องประเภทที่เป็นโมฆะด้วยHasValueเท่ากับfalseคุณจะได้nullตัวชี้แทนชนิดที่ว่างเปล่าแบบบรรจุกล่อง (มีสถานการณ์ที่คล้ายกันกับการแกะกล่อง)
คุณสมบัติเหล่านี้ทำให้เป็นประเภทที่ไม่ใช่ค่าประเภทที่เป็นค่าว่างได้ แต่แน่ใจว่าไม่ใช่ประเภทการอ้างอิงเช่นกัน เป็นประเภทค่าว่างพิเศษของตัวเอง
ไม่ประเภท Nullable เป็นโครงสร้าง รันไทม์จะจัดการการตั้งค่าของค่าว่างให้คุณอย่างชาญฉลาดโดยให้ลักษณะของประเภทการอ้างอิงเมื่อมันไม่ใช่ ....
ประเภท Nullable ไม่สามารถอ้างอิงได้
คุณไม่จำเป็นต้องทำให้ประเภทการอ้างอิงเป็นประเภทที่ว่างเปล่าเนื่องจากคุณสามารถส่งค่าว่างแทนได้