चेतावनी यहाँ निकालने का तरीका कोड का एक टुकड़ा है:ReSharper: "संभावित 'System.NullReferenceException'"
IUser user = managerUser.GetUserById(UserId);
if (user==null)
throw new Exception(...);
Quote quote = new Quote(user.FullName, user.Email);
यहाँ सब कुछ ठीक है। लेकिन अगर मैं की जगह "अगर" के बाद एक साथ कतार:
ComponentException<MyUserManagerException>.FailIfTrue(user == null, "Can't find user with Id=" + UserId);
जहां समारोह कार्यान्वयन पीछा कर रहा है: संभावित 'System.NullReferenceException' 1 के उपयोग पर ओर इशारा करते हुए:
public abstract class ComponentException<T> : ComponentException
where T : ComponentException, new()
{
public static void FailIfTrue(bool expression, string message)
{
if (expression)
{
T t = new T();
t.SetErrorMessage(message);
throw t;
}
}
...
}
फिर ReSharper मुझे एक चेतावनी उत्पन्न करता है 'उपयोगकर्ता' ऑब्जेक्ट का।
क्यू 1। यह ऐसा अपवाद क्यों उत्पन्न करता है? जहां तक मैं देखता हूं कि 'user == null' है तो अपवाद उत्पन्न होगा और निष्पादन कभी भी उपयोग बिंदु तक नहीं पहुंच पाएगा।
प्रश्न 2। उस चेतावनी को कैसे हटाएं? कृपया ध्यान दें: 1. मैं इस चेतावनी को टिप्पणियों के साथ दबाना नहीं चाहता हूं (मेरे पास बहुत सारे टुकड़े होंगे और मेरे स्रोत कोड को 'टिप्पणी किए गए कचरे में बदलना नहीं चाहते हैं); 2. मैं इस समस्या को चेतावनी से 'संकेत' के 'सुझाव' में बदलने के लिए resharper सेटिंग्स को बदलना नहीं चाहता।
धन्यवाद।
किसी भी विचार का स्वागत है!
पीएस मैं resharper 5.1, एमवीएसवी 2008, सी #
मैं कामना की कि यह सच था है ... Resharper 5.1 सही ढंग से 'Debug.Assert की पहचान करने में विफल रहता है (उपयोगकर्ता = अशक्त!);' और चेतावनी को जन्म देती है। क्या मुझे कोई विन्यास करने की ज़रूरत है? –
उह, आर # 5.1 काफी पुराना है, इसलिए मेरे पास आपकी समस्या का परीक्षण करने के लिए कुछ भी नहीं है। कुछ संकेत हालांकि: सुनिश्चित करें कि आपका कोड 'System.Diagnostics.Debug' वर्ग को सही ढंग से संदर्भित करता है क्योंकि कोड अनुबंध उस के लिए परिभाषित किया गया था, और उस नाम/हस्ताक्षर के साथ मनमानी तरीकों के लिए नहीं। साथ ही, सुनिश्चित करें कि बिल्ड कॉन्फ़िगरेशन डीबग पर सेट है (अन्यथा कोड दायरे से बाहर है और इसलिए चेतावनी पॉप अप हो जाती है!)। – Lucero
'Debug.Assert' काम करता है, लेकिन केवल डीबग मोड में। –