มีความแตกต่างระหว่าง null และ System.DBNull.Value หรือไม่ ถ้าใช่มันคืออะไร?
ฉันสังเกตเห็นพฤติกรรมนี้แล้ว -
while (rdr.Read())
{
if (rdr["Id"] != null) //if (rdr["Id"] != System.DBNull.Value)
{
int x = Convert.ToInt32(rdr["Id"]);
}
}
ในขณะที่ฉันดึงข้อมูลจากฐานข้อมูลโดยใช้ sql datareader แม้ว่าจะไม่มีค่าที่ส่งif(rdr["Id"] != null)คืนกลับมาtrueและในที่สุดก็มีข้อยกเว้นสำหรับการแคสต์ null เป็นจำนวนเต็ม
แต่นี้ถ้าผมใช้ผลตอบแทนif (rdr["Id"] != System.DBNull.Value)false
ความแตกต่างระหว่าง null และ System.DBNull.Value คืออะไร?
System.Dataและอีกค่าหนึ่งเป็นค่าพิเศษที่บ่งบอกถึงการขาดการอ้างอิง พวกเขาไม่มีอะไรเกี่ยวข้องกัน คุณสามารถอธิบายสิ่งที่คุณสับสนอย่างละเอียดได้หรือไม่? คำถามที่แท้จริงของคุณคือ "ทำไมต้องทำDataRowsและDataReadersใส่ไว้DBNull.Valueในตัวเองแทนnull?