আমার পদ্ধতির করণীয়
(object)item == null
যার উপর আমি নির্ভর করছি object
নিজের ইক্যুয়ালিটি অপারেটর যা ভুল হতে পারে না। বা একটি কাস্টম এক্সটেনশন পদ্ধতি (এবং একটি ওভারলোড):
public static bool IsNull<T>(this T obj) where T : class
{
return (object)obj == null;
}
public static bool IsNull<T>(this T? obj) where T : struct
{
return !obj.HasValue;
}
বা আরও কেসগুলি পরিচালনা করতে হতে পারে:
public static bool IsNull<T>(this T obj) where T : class
{
return (object)obj == null || obj == DBNull.Value;
}
সীমাবদ্ধতা IsNull
মান ধরণের প্রতিরোধ করে। এখন এটি কলিং হিসাবে মিষ্টি
object obj = new object();
Guid? guid = null;
bool b = obj.IsNull(); // false
b = guid.IsNull(); // true
2.IsNull(); // error
যার অর্থ আমার কাছে নালাগুলি জুড়ে যাচাই করার একটি ধারাবাহিক / না-ত্রুটি-প্রবণ স্টাইল রয়েছে। আমি এটির (object)item == null
চেয়ে খুব সামান্য দ্রুতগতিতেওObject.ReferenceEquals(item, null)
পেয়েছি , তবে কেবল এটির জন্য যদি (আমি বর্তমানে এমন কিছু বিষয়ে কাজ করছি যেখানে আমি সবকিছুকে মাইক্রো-অনুকূলিত করতে পারি!)।
সাম্যতার চেক প্রয়োগের সম্পূর্ণ গাইড দেখতে , একটি রেফারেন্স ধরণের দুটি উদাহরণের তুলনা করার জন্য "সেরা অনুশীলন" কী?
Assert.IsFalse(foo2 == foo1);