2010-10-27 12 views
11

संभव डुप्लिकेट:
Use of var keyword in C#वर बनाम स्पष्ट घोषणा

हाय, बस काम चले गए और मैं var एक बहुत का उपयोग करने के लिए प्रयोग किया जाता रहा हूँ। मेरे पिछले काम पर हम बहुत सारे टीडीडी कर रहे थे और रिशेर्पर का उपयोग कर रहे थे।

इस नौकरी में वे तीसरे पक्ष के औजारों से नफरत करते हैं और डेवलपर्स यहां कहते हैं कि var हर समय उपयोग करना अच्छा नहीं है और यह स्पष्ट टाइपिंग के रूप में उतना कुशल नहीं है।

कुछ समय पहले मैंने सोचा था, लेकिन अब मैं इसे इतना उपयोग कर चुका हूं, और यह मेरा कोड साफ दिखता है।

मैंने कुछ पोस्ट पढ़ी हैं और ऐसा लगता है कि यह उतना ही कुशल है या नहीं। मैंने पढ़ा है कि var का उपयोग कर एक ही आईएल कोड उत्पन्न करता है। तो क्या यह उतना कुशल नहीं होना चाहिए? कहीं और मैंने पढ़ा है कि भले ही var का उपयोग एक ही आईएल कोड उत्पन्न करता है, यह पता लगाना है कि यह किस प्रकार है। तो 'अनुमानित' वास्तव में क्या मतलब है?

कुछ स्पष्टीकरण कि प्रदर्शन के अनुसार वे समान हैं या नहीं।

+0

"इस काम में वे तीसरे पक्ष के उपकरणों से नफरत है ', मैं विवेक की खातिर और अधिक महत्वपूर्ण करने के लिए, उन में से एक हुआ करता था मेरे समय के साथ चीजें और कोड प्रबंधन को आसान/क्लीनर और संगत बनाना Resharper या किसी तीसरे पक्ष के उपकरण का उपयोग नहीं कर सकता जो लाभ प्रदान करेगा। किसी चीज़ का उपयोग करने से नफरत करना किसी और को इसका इस्तेमाल करने से रोकने का कारण नहीं है। – Arjang

उत्तर

32

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

"इन्फर्ड" का अर्थ है "अन्य जानकारी से बाहर काम किया"। तो अगर घोषणा है:

string x = "hello"; 

चर xस्पष्ट प्रकार string का घोषित किया है। कंपाइलर को कुछ भी काम करने की ज़रूरत नहीं है। आप var का उपयोग करते हैं: संकलक तो

var x = "hello"; 

अभिव्यक्ति की संकलन समय प्रकार निर्धारित किये जाने से मिल जाए और कि चर के प्रकार बनाता है। x अभी भी कोड में हर जगह एक स्ट्रिंग चर के रूप में जाना जाता है।

यदि डेवलपर्स आप सोच रहे हैं कि var गतिशील रूप से व्यवहार करता है, तो मैं आपको बताई गई अन्य जानकारी के बारे में बहुत सावधान रहूंगा। आप बुद्धिमानी से सुझाव देना चाहते हैं कि वे कुछ और सीखें कि नई भाषा सुविधाएं कैसे तय करने से पहले काम करती हैं।

डेवलपर दक्षता के संदर्भ में, यह न्याय करने के लिए एक कठिन सवाल है। व्यक्तिगत रूप से मैं varकाफी थोड़ा सा उपयोग करता हूं - विशेष रूप से परीक्षणों में - लेकिन हर जगह नहीं।

+0

बहुत विस्तृत उत्तर के लिए बहुत बहुत धन्यवाद। वास्तव में इसकी सराहना करते हैं। मैं हर जगह उपयोग नहीं करता हूं बल्कि जीवन को आसान बनाता है और जैसा कि आपने बताया कि कोई मतभेद प्रदर्शन नहीं है तो क्यों नहीं। आपके समय के लिए फिर से धन्यवाद – user9969

+0

तो क्या यह कहना सही होगा var का उपयोग कर स्पष्ट रूप से टाइप किए गए चर का उपयोग करने के लिए बहुत छोटा _compilation_ प्रदर्शन लाभ है? (समझ में आता है कि रनटाइम प्रदर्शन समान होगा।) – paz

+0

@ एडगर: मैं संकलन प्रदर्शन लाभों के बारे में कहना नहीं चाहूंगा। यदि वे बिल्कुल मौजूद हैं, तो मुझे संदेह है कि वे उचित कोड के लिए मापनीय हैं, और मैं भविष्यवाणी नहीं करना चाहता कि लाभ किसी भी सबूत के बिना किस तरह से जाएगा। –

6

varcompilation के दौरान सटीक प्रकार में परिवर्तित किया गया है। मेरे ज्ञान के अनुसार दक्षता में कोई समस्या नहीं है।

इस कोड के लिए

आईएल नीचे दिखाया गया है:

class Foo 
    { 
     void Bar() 
     { 
      var iCount = 0; 
      int iCoount1 = 0; 
     } 
    } 

alt text

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