سؤال

هل لدى أي شخص تفضيل حول كيفية التحقق مما إذا كانت القيمة موجودة DBNull؟لقد وجدت أن هذين العبارتين يعطيانني النتائج التي أريدها، ولكن فقط أتساءل عما إذا كان هناك تفضيل؟

if (any is System.DBNull)

مثل:

if (any == System.DBNull.Value)

شكرًا!

هل كانت مفيدة؟

المحلول

if (any == System.DBNull.Value) ...

أفضل ذلك، ببساطة لأنني قرأت ذلك على أنه مقارنة بين القيم، وليس الأنواع.

نصائح أخرى

أنا أميل إلى استخدام

if (DBNull.Value.Equals(value)) {
    //
}

أو

if (Convert.IsDBNull(value)) {
    //
}

is لا يستخدم الانعكاس كما يقول Kevlar623.انها خرائط ل isinst عملية في ILعلى هذا المستوى، تعتبر مقارنة الأداء أمرًا سخيفًا تمامًا، إلا إذا كنت تعمل على نظام توجيه صاروخي.

أنا أستعمل value is DBNull. يبدو الأمر صحيحًا، وباعتباري مطورًا مصابًا بجنون العظمة، لا أستطيع أن أثق في أن القيمة الوحيدة الموجودة على الإطلاق هي DBNull.Value.الأخطاء تحدث.

إذا كنت في C#، يجب عليك استخدام ==; is يستخدم الانعكاس وهو أكثر تكلفة في الحساب، خاصة أنه لا يوجد سوى مثيل واحد فقط System.DBNull.

أنا أحب "is System.DBNull" أكثر لأنني أكره فكرة مقارنة شيء ما بـ NULL وجعله صحيحًا.العديد من صيغ الجملة الأخرى (ما هو جمع ذلك بحق الجحيم؟) سيكون لها أي شيء==NULL return NULL.

أنا أفهم أن هناك DBNull.Value لسبب ما.أنا أعرف.أنا أدرج تفضيلاتي :)

هذا مثال جيد على الشكل يتبع الوظيفة.أيهما ينفذ بشكل أكثر كفاءة هو الطريق الصحيح.ما يبدو عليه أو يقرأه أو الأسماء السيئة التي يطلقها عليك ليس له أي صلة.استخدم اللغة بكفاءة، ولا تحوّل اللغة إلى لغة جديدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top