2012-02-12 20 views

उत्तर

55

से: 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 {} 
    } 
} 
28

जावा में "नेमस्पेस" जैसी कोई शब्द नहीं है - एक पैकेज जावा में नामस्थान के रूप में कार्य करता है, हालांकि नामों के लिए एक दायरा प्रदान करने के मामले में। यह अभिगम्यता मॉडल का हिस्सा भी है।

section 7 of the Java Language Specification से:

कार्यक्रम संकुल के सेट के रूप में आयोजित किया जाता है। प्रत्येक पैकेज के प्रकारों के लिए नामों का अपना सेट होता है, जो नाम विवादों को रोकने में मदद करता है। पैकेज के बाहर एक शीर्ष स्तर का प्रकार सुलभ (§6.6) है जो केवल तभी घोषित करता है जब प्रकार सार्वजनिक घोषित किया जाता है।

संपादित करें: ठीक है, स्पष्टीकरण के बाद: एक जावा पैकेज समान एक सी # नाम स्थान के लिए है - यह, पहुंच पर प्रभाव पड़ता है, सिवाय इसके कि जबकि सी में # नामस्थान और पहुंच पूरी तरह ओर्थोगोनल हैं।

+1

मैं निश्चित रूप से सी # में नाम स्थान का उल्लेख करने का मतलब! – Mazzy

11

में सी ++/सी #, नामस्थान सिर्फ नाम विभाजन गलती से विभिन्न स्थानों में एक चर के लिए एक ही नाम का उपयोग करके टकराव से बचने के लिए किया जाता है।

जावा में, संकुल तुलना में कहीं अधिक कर रहे हैं सिर्फ इतना है कि - संकुल मॉड्यूल के लिए उपयोग किया जाता है, नामकरण पहलू बस इसे का एक हिस्सा है।

36

में कुछ जानकारी है कि अलग-अलग हैं।

जावा में निर्देशिका संरचना पैकेज संरचना से मेल खाना चाहिए। सी सी # में इस तरह के प्रतिबंध।

सी # में आप एक फ़ाइल में एकाधिक नामस्थान हो सकता है। जावा में एक फ़ाइल एक पैकेज से संबंधित है (पिछला देखें)।

जावा डिफ़ॉल्ट/पैकेज पहुंच है। विधानसभा में सी # आंतरिक पहुंच जाती है।

यदि आप वीएस और ग्रहण का उपयोग करते हैं और उन्हें परियोजना की संरचना करने दें, तो आपको अंतर बहुत अधिक नहीं लगेगा।

0

जावा में आप कक्षाओं में विभिन्न एक्सेस विनिर्देशक लागू कर सकते हैं जो आपके पैकेज पर प्रभाव डालेंगे।

संरक्षित: एक ही पैकेज के लिए और एक अन्य पैकेज में अपनी उपवर्गों के लिए सुलभ, डिफ़ॉल्ट: सुलभ एक ही पैकेज के लिए, सार्वजनिक: वैश्विक रूप से पहुंच, निजी: एक ही पैकेज से भी सुलभ नहीं।

पहुँच विनिर्देशक के इन प्रकार सी तेज में नाम स्थान पर लागू नहीं होते

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