هل هذه طريقة آمنة وفعالة للتعامل مع قراءة القيم الخالية في ديسيبل باستخدام الأدوية الجيلية؟

StackOverflow https://stackoverflow.com/questions/1438888

  •  10-07-2019
  •  | 
  •  

سؤال

لقد كنت ألعب مع الأدوية العامة وكنت آمل أن أتمكن من الحصول على بعض التعليقات أو الاقتراحات حول وظيفة قمت بإنشائها للمساعدة في التعامل مع قيم القراءة الفارغة من DB. قلقي الرئيسي هو في البيان. هل هناك طريقة أفضل لمعرفة ما إذا كانت T هي سلسلة إلخ.؟ شكرًا.

public static T CheckNull<T>(object value)
    {
        if ((value != null) && value.Equals(DBNull.Value))
        {
            if (object.ReferenceEquals(typeof(T), typeof(String)))
                value = string.Empty;
            else if (object.ReferenceEquals(typeof(T), typeof(Boolean)))
                value = false;
            else
                value = null;
        }
        return (T)value;
    }
هل كانت مفيدة؟

المحلول

بصرف النظر عن Tنوع ، يمكنك العودة إليه default(T) والتي ستوفر القيمة الافتراضية للنوع المحدد (string.Empty, 0, false, null, ، إلخ...) :

value = default(T);

يحرر: default(string) ومع ذلك ، فإن العودة null.

نصائح أخرى

تحتاج أيضًا إلى تغطية أنواع البيانات البدائية الأخرى.

value = default(T);

هذه الإرجاع الفارغ إذا كان نوع مرجع ، وإلا 0 ، خطأ أو أي شيء هو القيمة الافتراضية المناسبة للنوع المعطى T.

ملحوظة: الافتراضي (السلسلة) هو null, ، وليس string.empty. إذا كنت تريد أن تكون String.Empty, ، تحتاج إلى تنفيذ هذا كاستثناء.

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