C# Namespaces
Introduction to C# Namespaces
Namespaces किसी बड़े project में classes और methods को आसानी से organize करने के लिए बहुत उपयोगी होते है। C# में namespaces का बहुत अधिक इस्तेमाल किया गया है। अनेकों .NET framework की classes को namespaces में ही organize किया गया है।
उदाहरण के लिए आप WriteLine() method द्वारा बार बार output show करते है। यह WriteLine() method Console class में declare किया गया है। Console class को System namespace में declare किया गया है जिसे आप program की शुरुआत में using keyword द्वारा specify करते है।
Namespaces create करके आप classes और methods के नाम के scope को control कर सकते है। सामन्यतः आप एक program में एक नाम की दो classes या functions नहीं create कर सकते है। लेकिन आप एक program में दो namespaces create कर सकते है और उनमें same नाम की classes और functions create कर सकते है।
ऐसा करने से आपके program में किसी प्रकार का name conflict नहीं होगा। क्योंकि classes और methods अलग अलग namespaces के अंदर declare किये गए है। Namespaces के द्वारा complex projects को भी आसानी से handle किया जा सकता है।
Syntax of C# Namespaces
C# namespaces का general syntax निचे दिया जा रहा है।
namespace-keyword namespace-name
{
class class-name //Class inside namespace
{
type var-name; //Variables inside class
return-type method-name() //Method inside class
{
//method code…
}
}
}
जैसा की आप ऊपर दिए गए syntax में देख सकते है namespace create करने के लिए namespace keyword use किया जाता है। आप एक namespace के अंदर दूसरा namespace भी create कर सकते है। इसका syntax निचे दिया जा रहा है।
namespace-keyword namespace-name
{
class class-name
{
//Fields, properties, methods code here…
}
namespace-keyword other-namespace-name
{
class class-name
{
//Fields, properties, methods code here…
}
}
}
ऐसे namespaces जो किसी दूसरे namespaces के अंदर declare किये जाते है nested namespaces कहलाते है।
Using Directive
किसी namespace की classes और methods को आप अपने program में use कर सकते है। लेकिन ऐसा करने के लिए आपको सबसे पहले compiler को यह बताना होता है की आप उस namesapce को use करेंगे। इसके लिए आप using directive use करते है।
इस directive से compiler को पता चलता है की program specify किये गए namespace की classes और method को use करता है। इसका सबसे अच्छा उदाहरण System namespace है जिसे आप using directive द्वारा हर program में सबसे पहले specify करते है।
Using directive द्वारा आप namespace के नाम को बार बार specify करने की परेशानी से बच जाते है। उदाहरण के लिए यदि आप using directive द्वारा System namespace को नहीं specify करते है तो आपको simple output print करवाने के लिए class के नाम से पूर्व namespace का नाम भी include करना होगा।
System.Console.WriteLine(“message here…”);
इस प्रकार आप जँहा भी System namespace की classes और methods को use करेंगे हर जगह आपको उनसे पहले System namespace define करना होगा। लेकिन यदि आप using directive द्वारा namespace को पहले ही specify कर देते है तो आपको हर बार namespace को specify करने की आवश्यकता नहीं होती है।
Using directive का general syntax निचे दिया जा रहा है।
using-keyword namespace-name;
यदि आप पुरे namesapce को ना use करके सिर्फ किसी specific class को using directive द्वारा define करना चाहते है तो ऐसा आप namespace के नाम के बाद dot (.) operator लगाकर कर सकते है।
using-keyword namespace-name class-name;
किसी namespace की class का object create करने के लिए आप निचे दिए जा रहे syntax को follow कर सकते है।
namespace-name.class-name object-name = new-keyword namespace-name.class-name(); Namespace की class का object create करके आप उस class के सभी properties और methods को use कर सकते है।
Example of C# Namespaces
C# में namespaces create और use करना निचे उदाहरण द्वारा समझाया जा रहा है।
using System;
using FirstNamespace;
using SecondNamespace;
namespace FirstNamespace
{
class myClass
{
public void display()
{
Console.WriteLine(“First Namespacen”);
}
}
}
namespace SecondNamespace
{
class myClass
{
public void display()
{
Console.WriteLine(“Second Namespacen”);
}
}
}
class myClass
{
static void Main(string[] args)
{
FirstNamespace.myClass Fnc = new FirstNamespace.myClass();
SecondNamespace.myClass Snc = new SecondNamespace.myClass();
Fnc.display();
Snc.display();
}
}
ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।
First Namespace
Second Namespace