2011-11-15 12 views
6

बस एक प्रदर्शन प्रश्न "का उपयोग" ...निरर्थक कर सकते हैं रों नीचा प्रदर्शन

मान लीजिए कि मैं 5 श्रेणियां होती हैं और उनमें से प्रत्येक System.Data के लिए एक संदर्भ है और एक देसी लाइब्रेरी करते हैं। प्रश्न में 5 वर्ग कक्षा पुस्तकालय का हिस्सा हैं और अंत में कुछ वेब अनुप्रयोगों को एक संदर्भ के रूप में बनाया और प्रकाशित किया जाएगा।

क्या सिस्टम.डेटा और अन्य लाइब्रेरी को अपनी कक्षा में संदर्भित करने वाले कार्यों को लेकर कोई आकार/प्रदर्शन प्राप्त हुआ है ताकि सिस्टम.डाटा और मेरी अन्य लाइब्रेरी को संदर्भित किया जा सके, 5 से 1 तक कम हो गया है? सामान्य ज्ञान मुझे बता रहा है कि इससे कोई फर्क नहीं पड़ता क्योंकि डीएलएल उन कार्यों में से किसी एक के बिंदु पर पढ़ा जाएगा, इससे कोई फर्क नहीं पड़ता कि वे कहां बैठते हैं या आपके पास "System.Data" का कितनी बार उपयोग करते हैं कोडबेस ... लेकिन मैं पहले गलत रहा हूं :)

उत्तर

10

नहीं - using निर्देश असेंबली पर संदर्भ नहीं जोड़ते हैं; वे एक ही दायरे में कोड के लिए नामस्थान आयात करते हैं। सभी वे क्या कर रहे हैं आप के बजाय अपने कोड में

Foo foo = new Foo(); // etc 

उपयोग करने के लिए

Some.Namespace.Containing.Foo foo = new Some.Namespace.Containing.Foo(); 

की वे परिवर्तन नहीं करते जो विधानसभाओं सब पर उनका संदर्भ दिया जा इजाजत दी है। नामस्थानों और असेंबली के बीच अलग-अलग समझना महत्वपूर्ण है - दुर्भाग्यवश जब वे अक्सर एक ही नाम का उपयोग करते हैं, तो यह भ्रमित हो सकता है। System.Linq नेमस्पेस System.Core असेंबली में Enumerable कक्षा के उदाहरण के रूप में वे अलग हैं।

+0

उत्कृष्ट। तो उपयोग करने से बस वीएस को पता चलता है कि इंटेलिजेंस के साथ किस नामस्थान का उपयोग करना है? और जब तक निष्पादन कोड इसके संदर्भ में नहीं आता है तब तक वास्तविक असेंबली का उपयोग नहीं किया जाता है? – cavillac

+0

@ कैविल्लैक: इंटेलिजेंस के लिए नहीं, बल्कि कंपाइलर के लिए। असेंबली संदर्भों का संकलन के दौरान भी उपयोग किया जाता है (अन्यथा संकलक नहीं जानता कि किस प्रकार और सदस्य उपलब्ध हैं), लेकिन वे आम तौर पर निष्पादन समय पर आलसी लोड होते हैं। –

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