दोनों कोड को व्यवस्थित करने और नाम संघर्ष (naming conflicts) रोकने के लिए उपयोग होते हैं, लेकिन महत्वपूर्ण अंतर हैं।
Java में पैकेजेस (Packages)
package package_name;से घोषित (फाइल की पहली लाइन)।- डायरेक्टरी स्ट्रक्चर पैकेज स्ट्रक्चर से **मेल खाना चाहिए** (फोल्डर = पैकेज)।
- एक फाइल एक ही पैकेज से संबंधित हो सकती है।
- एक्सेस कंट्रोल:
package-private(डिफ़ॉल्ट) केवल उसी पैकेज में विज़िबल। - उद्देश्य: नाम संघर्ष रोकना, एक्सेस कंट्रोल, खोज/लोकेट आसान।
C# में नेमस्पेस (Namespaces)
namespace NamespaceName { ... }ब्लॉक से घोषित।- डायरेक्टरी स्ट्रक्चर से **मेल खाने की आवश्यकता नहीं** (हालांकि कन्वेंशन अनुसरण किया जाता है)।
- एक फाइल में **एकाधिक नेमस्पेस** हो सकते हैं।
- नेमस्पेस **एक्सेस मॉडिफायर नहीं हैं** - वे केवल नामों को व्यवस्थित करते हैं।
internalटाइप असेंबली-स्तर तक सीमित होता है। - नेस्टेड नेमस्पेस:
namespace A.B.C { }याnamespace A { namespace B { } }
तुलना तालिका
| विशेषता | Java Package | C# Namespace |
|---|---|---|
| घोषणा | package name; | namespace Name { } |
| फिजिकल स्ट्रक्चर | अनिवार्य मिलान | वैकल्पिक (कन्वेंशन) |
| फाइल प्रति इकाई | 1 पैकेज | एकाधिक नेमस्पेस संभव |
| एक्सेस कंट्रोल | package-private डिफ़ॉल्ट | नहीं (internal असेंबली के लिए) |
| नेस्टिंग | डॉट नोटेशन (a.b.c) | ब्लॉक नेस्टिंग या डॉट |
| उपयोग | import pkg.* | using Namespace; |
C# नेमस्पेस उदाहरण
namespace MyApp.Models
{
public class User { }
}
namespace MyApp.Services
{
public class UserService { }
}
// उपयोग
using MyApp.Models;
using MyApp.Services;