في كيفية العديد من اللغات باطل لا يساوي أي شيء ولا حتى Null?
-
09-06-2019 - |
سؤال
في كيفية العديد من اللغات باطل لا يساوي أي شيء ولا حتى Null?
المحلول
هذا هو الطريق في SQL (منطق اللغة) لأن null يعني غير معروف/غير معروف.
ومع ذلك ، في لغات البرمجة (مثل C++ أو C#), null pointer/مرجع قيمة محددة مع معنى محدد -- لا شيء.
اثنين من الحلاوة هي equivilent ، ولكن اثنين من المجاهيل لا.الارتباك يأتي من حقيقة أن نفس الاسم (null) يستخدم لكلا المفهومين.
نصائح أخرى
في VB6 التعبير Null = Null
سوف تنتج Null
بدلا من True
كما كنت تتوقع.هذا سوف يسبب خطأ وقت التشغيل إذا كنت في محاولة لتعيين منطقية ، ومع ذلك إذا كنت تريد استخدامه
كما شرط "If ... Then
"وسوف تتصرف مثل False
.وعلاوة على ذلك Null <> Null
سوف أيضا
تنتج Null
, لذا:
في VB6 هل يمكن أن نقول أن Null
هو لا يساوي نفسه (أو أي شيء آخر) ، ولا غير متكافئة!
كنت من المفترض أن اختبار باستخدام IsNull()
وظيفة.
VB6 أخرى خاصة القيم:
Nothing
لكائن المراجع.Nothing = Nothing
هو خطأ ترجمة.(يفترض أن مقارنتها باستخدام "is
")Missing
على المعلمات الاختيارية التي لم تعط.فإنه لا يوجد لديه حرفية التمثيل لذلك لا يمكنك حتى كتابةMissing = Missing
.(الاختبارIsMissing(foo)
)Empty
على غير مهيأ المتغيرات.هذا اختبار تساوي نفسها على الرغم من أن هناك أيضا وظيفةIsEmpty()
.- ...اسمحوا لي أن أعرف إذا كنت قد نسيت أحد
أتذكر أنني كنت قليلا بالاشمئزاز مع VB.
أوراكل من هذا الطريق.
SELECT * FROM dual WHERE NULL=null; --no rows returned
الخلية null آمنة المساواة المشغل ، <=>, والتي ترجع صحيح إذا كان كلا الجانبين على قدم المساواة أو كلا الجانبين هي null.انظر الخلية مستندات.
في C#, Nullable<bool> له خصائص مثيرة للاهتمام فيما يتعلق المنطقية ، ولكن المساواة المشغل هو نفس أنواع أخرى في أن اللغة (أي ((منطقي?)باطل == (منطقي?)null) == true).
للحفاظ على تماس سلوك تماس العوامل المنطقية ، والحفاظ على الاتساق مع عدم تماس المنطقية ، nullable منطقية لديه بعض الخصائص المثيرة للاهتمام.على سبيل المثال:صحيح || null == صحيح.false && null == كاذبة ، إلخ.هذا يقف في تناقض مباشر مع غيرها من قيمتها ثلاثة المنطق اللغات مثل ANSI SQL.
يمكنك جعل روبي عمل هذه الطريقة:
class Null
def self.==(other);false;end
end
n=Null
print "Null equals nothing" if n!=Null
في SQL عليك أن تفعل شيئا مثل:
WHERE column is NULL
بدلا من
WHERE column = NULL