नेमस्पेस एक तरीका है जिससे जुड़े हुए कोड को एक समूह में रखा जाता है और नामों के टकराव से बचा जाता है। सबसे मामूली कोड बेस को छोड़कर बाकी सब में नेमस्पेस आम तौर पर मौजूद रहते हैं।
इसका सिंटैक्स इस तरह है:
namespace MyNameSpace
{
public class MyClass {}
public class OtherClass {}
}
किसी नेमस्पेस में रखे गए टाइप को उस नेमस्पेस के स्कोप से बाहर इस्तेमाल करने के लिए टाइप के नाम से पहले डॉट सिंटैक्स लगाया जाता है। इसके अलावा, और अधिकतर ऐसा ही होता है, आप फाइल के ऊपर (या नेमस्पेस के अंदर) एक using डायरेक्टिव रख सकते हैं और फिर टाइप को बिना प्रीफिक्स के इस्तेमाल किया जा सकता है। एक ही नेमस्पेस के अंदर टाइप के नाम के साथ नेमस्पेस लिखने की ज़रूरत नहीं होती।
namespace MySpace
{
public class MyClass {}
public class Foo
{
public void Bar()
{
var baz = new MyClass();
}
}
}
public class Qux
{
public void Box()
{
var nux = new MySpace.MyClass();
}
}
namespace OtherSpace
{
using MySpace;
public class Tix
{
public void Jeg()
{
var lor = new MyClass();
}
}
}
आप using MyAlias = MySpace; सिंटैक्स की मदद से किसी नेमस्पेस का एलियस बना सकते हैं। इसके बाद आप उस एलियस का इस्तेमाल वहीं-वहीं कर सकते हैं जहाँ उस नेमस्पेस का किया जा सकता था।
प्रबंधन Remote Control Car प्रोजेक्ट remote-control-competition पर डार्विन के सिद्धांत लागू करना शुरू कर रहा है। डेवलपरों को दो टीमों, Red और Blue, में बाँट दिया गया है, और उनका काम है एक-दूसरे से स्वतंत्र रहते हुए डिज़ाइन को बेहतर बनाना। उन्हें दूसरी टीम के डिज़ाइन संबंधी फैसलों की चिंता करने की ज़रूरत नहीं है।
आपसे कहा गया है कि आप कोड को देखें और यह पता लगाएँ कि परीक्षण के उद्देश्य से दोनों प्रयासों को किस तरह सबसे अच्छे ढंग से जोड़ा जा सकता है।
कोड का आशय बेहतर ढंग से व्यक्त करने के लिए कृपया namespaces का इस्तेमाल कीजिए।
फिलहाल Motor और Telemetry जैसे महत्वपूर्ण टाइप, और खुद RemoteControlCar की बात तो अलग ही है, एक बाहरी स्टैटिक क्लास <Color>RemoteControlCarTeam के अंदर नेस्टेड हैं। उस बाहरी क्लास का एकमात्र उद्देश्य यह है कि एक ही नाम वाले टाइप प्रोग्राम में साथ-साथ रह सकें। namespace इस्तेमाल करके यह बात बेहतर ढंग से व्यक्त होती है। अगले अभ्यास में आप देखेंगे कि इन उद्देश्यों के लिए एक namespace में static class के मुकाबले फायदे हैं।
प्रबंधन ज़ोर देता है कि परिभाषाओं में टीमों के नाम RedRemoteControlCarTeam और BlueRemoteControlCarTeam ही हों, लेकिन टीमों का नाम लेते समय ये नाम काफी बोझिल लगते हैं। कार बनाते समय छोटे आइडेंटिफायर Red और Blue इस्तेमाल करने का कोई तरीका खोजिए।
Exercism पर साइन अप कीजिए और C# को 62 कॉन्सेप्ट178 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।