ประเภทอ้างอิงประเภท nullable หรือไม่


คำตอบ:


138

ไม่ nullable เป็นโครงสร้าง สิ่งที่เกิดขึ้นคือโครงสร้างที่ว่างเปล่ามีสองค่า:

  1. ค่าของชนิดข้อมูล ( intสำหรับint?, DateTimeสำหรับDateTime?ฯลฯ )
  2. ค่าบูลีนที่บอกว่ามีการตั้งค่าชนิดข้อมูลหรือไม่ ( HasValueคือคุณสมบัติ)

เมื่อคุณตั้งค่าของชนิดข้อมูลโครงสร้างHasValueจะเปลี่ยนเป็นจริง

ประเภท Nullable (คู่มือการเขียนโปรแกรม C #)


26

จากประเภท Nullable (คู่มือการเขียนโปรแกรม C #) :

ประเภท Nullable คืออินสแตนซ์ของ System.Nullable struct

และ

ประเภท Nullable แสดงถึงตัวแปรประเภทค่าที่สามารถกำหนดค่าของ null ได้ คุณไม่สามารถสร้างประเภทที่เป็นโมฆะได้ตามประเภทการอ้างอิง (ประเภทการอ้างอิงรองรับค่า null แล้ว)

ดังนั้นจึงไม่ใช่ประเภทอ้างอิง


14

ประเภท Nullable ไม่ใช่ประเภทค่าหรือประเภทอ้างอิง คล้ายกับประเภทค่ามากกว่า แต่มีคุณสมบัติบางอย่างของประเภทการอ้างอิง

ธรรมชาติประเภท nullable nullอาจจะกำหนดให้ นอกจากนี้ประเภทที่เป็นโมฆะไม่สามารถตอบสนองstructข้อ จำกัดทั่วไปได้ นอกจากนี้เมื่อคุณใส่กล่องประเภทที่เป็นโมฆะด้วยHasValueเท่ากับfalseคุณจะได้nullตัวชี้แทนชนิดที่ว่างเปล่าแบบบรรจุกล่อง (มีสถานการณ์ที่คล้ายกันกับการแกะกล่อง)

คุณสมบัติเหล่านี้ทำให้เป็นประเภทที่ไม่ใช่ค่าประเภทที่เป็นค่าว่างได้ แต่แน่ใจว่าไม่ใช่ประเภทการอ้างอิงเช่นกัน เป็นประเภทค่าว่างพิเศษของตัวเอง


6

ไม่ประเภท Nullable เป็นโครงสร้าง รันไทม์จะจัดการการตั้งค่าของค่าว่างให้คุณอย่างชาญฉลาดโดยให้ลักษณะของประเภทการอ้างอิงเมื่อมันไม่ใช่ ....


2
ฉันจะถามว่า "จัดการอย่างชาญฉลาด" แทนที่จะเป็นเรื่องส่วนตัว โดยส่วนตัวแล้วฉันพบว่าพฤติกรรมสับสนและมักจะน่ารำคาญ
nicodemus13


0

คุณไม่จำเป็นต้องทำให้ประเภทการอ้างอิงเป็นประเภทที่ว่างเปล่าเนื่องจากคุณสามารถส่งค่าว่างแทนได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.