मेरे सिर के ऊपर बंद, मैं अशक्त तर्क के लिए जाँच करने के लिए 4 तरीके के बारे में सोच सकते हैं:पूर्व शर्त परीक्षण के लिए विभिन्न तरीकों के पेशेवर/विपक्ष?
Debug.Assert(context != null);
Contract.Assert(context != null);
Contract.Requires(context != null);
if (context == null) throw new ArgumentNullException("context");
मैं हमेशा पिछले पद्धति का उपयोग किया है, लेकिन मैं सिर्फ एक कोड का टुकड़ा है कि Contract.Requires
इस्तेमाल किया, देखा जो मैं मैं अपरिचित हूँ। प्रत्येक विधि के फायदे/नुकसान क्या हैं? क्या अन्य तरीके हैं?
VS2010 डब्ल्यू/Resharper में,
Contract.Assert
मुझे चेतावनी दी है कि अभिव्यक्ति हमेशा सच है (यह कैसे जानता है, मैं काफी यकीन नहीं है ... नहीं HttpContext अशक्त हो सकता है?),Contract.Requires
बाहर फीका हो जाता है और यह मुझसे कहता है संकलक विधि (मैं पूर्व कारण की वजह से मान, यह शून्य कभी नहीं होगा) आह्वान नहीं होगा, और- अगर मैं सब
context != null
करने के लिए पिछले पद्धति को बदलने कोड follo विंग फीका हो जाता है और यह मुझे बताता है कि कोड हेरिस्टिक रूप से पहुंच योग्य नहीं है।
तो ऐसा लगता है कि पिछले 3 तरीकों में वीएस स्थिर जांचकर्ता में निर्मित कुछ प्रकार की खुफिया जानकारी है, और Debug.Assert
बस गूंगा है।
प्रश्न स्पष्ट नहीं है। क्या आप वास्तव में एक बार में उन सभी का उपयोग करने की कोशिश कर रहे हैं? –
@ मैथ्यू: सुनिश्चित नहीं है कि यह स्पष्ट नहीं है ... नहीं, मैं उन्हें एक साथ उपयोग करने की कोशिश नहीं कर रहा हूं। मैंने कोड कोड स्निपेट किया है जैसे कि आप अलग-अलग तरीकों को चित्रित करने के लिए बस नल की जांच कर सकते हैं। – mpen
मैंने बाकी प्रश्नों से यही सोचा, लेकिन आपके द्वारा उपयोग की जाने वाली वाक्यविन्यास प्रस्तुति अजीब थी। –