2016-06-02 7 views
8

लंबी कहानी संक्षेप में, अगर मैं इस कार्य करें:क्या असेंबली में कोई संस्करण नहीं है?

string myV = Assembly.GetExecutingAssembly().GetName().Version.ToString(); 

विल कुछ कभी अशक्त हो सकता है? मैंने msdn पढ़ा है और यह GetName() और Version भागों को निर्दिष्ट नहीं करता है।

+0

बीटीडब्ल्यू: इसे 'संस्करण myV = ...' पढ़ना चाहिए, अन्यथा यह संकलित नहीं होगा। –

+0

'विधानसभा.GetExecutingAssembly() पर ReSharper का उपयोग करना। GetName()? संस्करण? .बिल्ड 'यह सुझाव देता है कि पहले दो'? 'अनावश्यक हैं (यानी शून्य नहीं हो सकता है) लेकिन आखिरी'? 'नहीं। –

+1

@UweKeim, आप 'संस्करण' के लिए' शून्य 'कैसे प्राप्त कर सकते हैं? – techspider

उत्तर

4

संस्करण हमेशा वहां रहेगा।

प्रत्येक असेंबली में इसकी पहचान के हिस्से के रूप में संस्करण संख्या है।

https://msdn.microsoft.com/en-us/library/51ket42z(v=vs.110).aspx

वैसे, अगर आप सी # 6 का उपयोग कर रहे हैं, इसी तरह के मामलों जब यकीन है कि क्या विधि रिटर्न आप अशक्त propogation ऑपरेटर का उपयोग पर विचार करना चाहिए के बारे में नहीं में "?।"। ऐसा करके आप सुनिश्चित करेंगे कि यह कभी भी शून्य संदर्भ त्रुटि नहीं फेंकता है।

सबसे खराब ऐसा हो सकता है कि परिणामी स्ट्रिंग शून्य होगी।

string myV = Assembly.GetExecutingAssembly()?.GetName()?.Version?.ToString(); 
+1

'संस्करण हमेशा वहां रहेगा' क्या आप उस पर विस्तार कर सकते हैं या कुछ दस्तावेज या कुछ बता सकते हैं? – Jonesopolis

+0

तो अंत में ToString() शून्य के कारण कभी विफल नहीं होगा? – Gaspa79

+0

हां तक ​​बहुत बहुत धन्यवाद। नतीजा सिर्फ शून्य होगा। –

5

यह अशक्त होने की तकनीकी रूप से उस क्षेत्र के लिए संभव है:

var name = Assembly.GetExecutingAssembly().GetName(); 
name.Version = null; 
Console.WriteLine(name.Version == null); // true 

लेकिन मैं किसी भी परिस्थिति में इसे अशक्त होगा सोच भी नहीं सकते। चूंकि यह जांच करने के लिए तुच्छ है मैं सिर्फ एक अशक्त जांच जोड़ सकते हैं और अगर उचित एक कस्टम अपवाद फेंक अगर यह अशक्त, एक NullReferenceException निदान मुश्किल हो सकता है क्योंकि आप क्या के रूप में कोई संकेत नहीं मिलता है के बाद से के अलावा अन्य रिक्त है स्टैक ट्रेस।

+0

मैं पूरी तरह से सुरक्षित-दृष्टिकोण से सहमत हूं, मैं केवल उत्सुक था क्योंकि मुझे यह जानकारी कहीं भी नहीं मिली। उस के लिए – Gaspa79

+1

, आप किसी भी चीज़ के लिए शून्य बना सकते हैं। 'शून्य' होने का सवाल असाइन नहीं कर रहा है; लेकिन असेंबली – techspider

+0

@techspider सच से पुनर्प्राप्त करके, लेकिन यह इतनी छोटी जांच है कि इसमें कोई हानि नहीं है।मैं कोड की दो पंक्तियों को जोड़ना चाहता हूं जो 'NullReferenceException' का निदान करने के लिए कोड के माध्यम से पता लगाने की तुलना में पूरी तरह से असाधारण परिस्थिति की पहचान करते हैं जो _should_ कभी नहीं होता है। –

संबंधित मुद्दे