जवाबों:
प्रेषक: http://www.javacamp.org/javavscsharp/namespace.html
पैकेज का उपयोग फ़ाइलों या सार्वजनिक प्रकारों को व्यवस्थित करने के लिए किया जाता है ताकि वे टकराव से बच सकें। पैकेज निर्माण को फाइल सिस्टम में मैप किया जा सकता है।
system.security.cryptography.AsymmetricAlgorithm aa;
प्रतिस्थापित किया जा सकता है:
import system.security.Crypography;
class xxx { ...
AsymmetricAlgorithm aa;
पैकेज के लिए कोई अन्य नहीं है। आपको विशिष्ट प्रकार का उल्लेख करने के लिए आयात विवरण या पूरी तरह से योग्य नाम का उपयोग करना होगा।
package n1.n2;
class A {}
class B {}
या
package n1.n2;
class A {}
एक अन्य स्रोत फ़ाइल:
package n1.n2;
class B {}
पैकेज नेस्टेड नहीं हो सकता। एक स्रोत फ़ाइल में केवल एक पैकेज विवरण हो सकता है।
नामस्थानों का उपयोग कार्यक्रमों को व्यवस्थित करने के लिए किया जाता है, दोनों एक कार्यक्रम के लिए "आंतरिक" संगठन प्रणाली के रूप में, और "बाहरी" संगठन प्रणाली के रूप में।
System.Security.Cryptography.AsymmetricAlgorithm aa;
प्रतिस्थापित किया जा सकता है:
using System.Security.Crypography;
AsymmetricAlgorithm aa;
वैकल्पिक रूप से, कोई नामस्थान के लिए अन्य नाम निर्दिष्ट कर सकता है, जैसे
using myAlias = System.Security.Crypography;
और तब के साथ वर्ग को देखें
myAlias.AsymmetricAlgorithm
namespace N1.N2
{
class A {}
class B {}
}
या
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
कुछ विवरण हैं जो अलग-अलग हैं।
जावा में डायरेक्टरी स्ट्रक्चर पैकेज संरचना से मेल खाना चाहिए। C # में ऐसा कोई प्रतिबंध नहीं है।
C # में आप एक फ़ाइल में कई नामस्थान रख सकते हैं। जावा में एक फ़ाइल एक पैकेज (पिछले देखें) से संबंधित है।
जावा में डिफ़ॉल्ट / पैकेज पहुंच है। सी # आंतरिक पहुंच विधानसभाओं में जाती है।
यदि आप वीएस और एक्लिप्स का उपयोग करते हैं और उन्हें परियोजना की संरचना करने देते हैं, तो आप मतभेदों को ज्यादा महसूस नहीं करेंगे।
जावा में "नेमस्पेस" के रूप में ऐसा कोई शब्द नहीं है - नामों के लिए एक गुंजाइश प्रदान करने के मामले में, एक पैकेज जावा में एक नामस्थान के रूप में कार्य करता है । यह एक्सेसिबिलिटी मॉडल का भी हिस्सा है।
से जावा भाषा विशिष्टता की धारा 7 :
कार्यक्रम पैकेज के सेट के रूप में आयोजित किए जाते हैं। प्रत्येक पैकेज में प्रकारों के लिए नामों का अपना सेट होता है, जो नाम के टकराव को रोकने में मदद करता है। पैकेज के बाहर एक शीर्ष स्तर प्रकार सुलभ (§6.6) है जो केवल तभी घोषित करता है जब प्रकार सार्वजनिक घोषित किया जाता है।
संपादित करें: ठीक है, स्पष्टीकरण के बाद: एक जावा पैकेज सी # नामस्थान के समान है - सिवाय इसके कि उस तक पहुंच पर प्रभाव पड़ता है, जबकि सी # में नामस्थान और पहुंच पूरी तरह से ऑर्थोगोनल हैं।
जावा में आप विभिन्न एक्सेस स्पेसियर को उन कक्षाओं में लागू कर सकते हैं जिनका आपके पैकेज पर प्रभाव पड़ेगा।
संरक्षित: एक ही पैकेज के लिए और एक अन्य पैकेज में अपने उपवर्गों के लिए सुलभ, डिफ़ॉल्ट: एक ही पैकेज के लिए सुलभ, सार्वजनिक: सार्वभौमिक रूप से सुलभ, निजी: एक ही पैकेज द्वारा भी सुलभ नहीं।
इस प्रकार के एक्सेस स्पेसियर c शार्प में नाम स्थान पर लागू नहीं होते हैं
एक नामस्थान एक नए फ़ोल्डर की तरह है, सभी सबफ़ोल्डर उप-नामस्थान हैं। यदि हम एक नाम स्थान को एक फ़ंक्शन के रूप में मानते हैं जैसे हमारे पास विपणन नामस्थान के तहत एक नामस्थान विज्ञापन है तो हम marketing.administr.adsclass.adsmethod का उपयोग करते हैं। किसी समस्या को हल करना बहुत आसान है। जावा में पैकेज के माध्यम से एक ही विधि है लेकिन नए कामर्स के लिए जटिल है।
C # में
'' नामस्थान मार्केटिंग {
class admissions{
int admissions_method(){
}
}
namespace advertising{
class advertisement{
void ad_in_newspaper( int no_of_lines){
}
void ad_on_tv(int seconds){
}
}
}
ग्राहक वर्ग में उपयोग करने के लिए
using marketing;
using marketing.advertising;
'' 'जावा में आप एक ही विधि का उपयोग करते हैं। आप एक पैकेज में कई कक्षाएं पैक करते हैं और कई बार इसका उपयोग करते हैं। यह विशिष्टता को बढ़ाता है। आप एक बार लिखते हैं और कई बार उपयोग करते हैं। एक पैकेज में संबंधित कक्षाएं। कई बार कोड करने की आवश्यकता नहीं है।
import system.security.crypography.AsymmetricAlgorithm;। जावा में चूंकि आपको एक क्लास आयात करना पड़ता है, पैकेज नहीं। यह संभव है कि सभी वर्गों को एक पैकेज में आयात किया जाए,import package.*लेकिन यह भी कि वह कक्षाओं का आयात करता है, पैकेज का नहीं।