2013-04-08 8 views
6

मैं MVC वेबएपीआई तैयार कर रही थी और मैं एक ट्यूटोरियल पीछा कर रहा था और सब कुछ ठीक तक जा रहा था मैं निम्नलिखित देखा: इस तरह शुरुआत मेंनामस्थान के अंदर या बाहर उपयोग स्थान?

namespace HelloWebAPI.Controllers 
{ 
    using HelloWebAPI.Models; 
    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Net; 
    using System.Net.Http; 
    using System.Web.Http; 

    public class ProductsController : ApiController 
    {} 

क्या हम आम तौर पर करते हैं हम संसाधनों को जोड़ने कि है \ गुंजाइश:

using HelloWebAPI.Models; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Net.Http; 
using System.Web.Http; 

namespace HelloWebAPI.Controllers 
{ 

    public class ProductsController : ApiController 
    {} 

मेरे पर्यवेक्षक ने मुझे बताया कि यह ठीक है और यह ठीक होना चाहिए, क्योंकि यह विषय पर एक आधिकारिक एमएस ट्यूटोरियल है।

** मैं क्या जानना चाहता हूं कि इससे कोई फर्क नहीं पड़ता, इसलिए मुझे इसके बारे में बेहतर समझ है? **

+1

कृपया अपना शीर्षक अपडेट करें http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title –

उत्तर

5

एक अंतर है, लेकिन वहां है।

यह संकलक द्वारा किए गए नाम समाधान के अनुक्रम के बारे में है। विषय पर अच्छा जवाब तुम यहाँ पा सकते हैं:

Should Usings be inside or outside the namespace

पहला मामला संकलक में अभ्यास में, मामले में तुरंत एक प्रकार की जानकारी नहीं मिली, नामस्थान में खोज करेंगेusing अंदर घोषित कर दिया। दूसरे मामले में, इसके बजाय, के बाद वास्तविक नामस्थान और के बीच पहली बार खोजा जाएगा, केवल बाहर घोषित अंदर खोज के लिए जाना होगा।

+0

सरल शब्दों में अच्छा जवाब। धन्यवाद। –

3

आप सी # फ़ाइल में एक से अधिक नामस्थान को परिभाषित कर सकते हैं।

नामस्थान के अंदर using कथन डालने का अर्थ है कि वे उस फ़ाइल के लिए उस नामस्थान के भीतर ही उपयोग में हैं।

उन्हें नामस्थान के बाहर रखना मतलब है कि वे फ़ाइल के सभी नामस्थानों के लिए आवेदन करते हैं।

यह प्रकार है कि परिवर्तनीय नामों का दायरा केवल उन आंतरिक ब्रेसिज़ों में लागू होता है जिनमें उन्हें और गहरा होता है।

1

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

फ़ाइल 1:

namespace MyNamespace 
{ 
    using System; 
    using System.IO; 

    public MyClass 
    { 
    } 
} 

फ़ाइल 2:

namespace MyNamespace 
{ 
    public MyClassV2 
    { 
    } 
} 

इस उदाहरण में आप के रूप में पहले से ही MyNamespace इन बयानों का उपयोग कर है MyClassV2 के लिए फ़ाइल 2 में का उपयोग कर जोड़ने की जरूरत नहीं है। लेकिन एक अलग नामस्थान के लिए आपको बयानों का उपयोग करने की आवश्यकता है।

+0

क्या आपने वास्तव में यह कोशिश की है? –

+2

यह गलत और भ्रामक उत्तर है। –

+0

यह गलत है! – Gwny

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