2009-01-15 16 views
13

सी शार्प में 'मित्र' कीवर्ड के बराबर क्या है?सी शार्प में 'मित्र' कीवर्ड के बराबर क्या है?

मैं 'आंतरिक' कीवर्ड का उपयोग कैसे करूं?

मैंने पढ़ा है कि 'आंतरिक' कीवर्ड सी # में 'मित्र' के लिए एक प्रतिस्थापन है।

मैं अपने सी # प्रोजेक्ट में एक डीएलएल का उपयोग कर रहा हूं जिसके पास मेरे पास स्रोत कोड है और फिर भी मैं मौजूदा कोड को संशोधित नहीं करना चाहता हूं। मुझे कक्षा विरासत में मिली है और मैं अपनी विरासत कक्षा का किसी भी तरह से उपयोग कर सकता हूं। समस्या यह है कि अभिभावक वर्ग के अधिकांश कोड ने विधियों को संरक्षित किया है। क्या किसी मित्र का उपयोग किसी भी तरह से इन संरक्षित तरीकों तक पहुंच या कॉल करना संभव हो जाएगा?

+5

कृपया इस प्रश्न को स्पष्ट करें, क्योंकि वीबी और सी दोनों के मित्र मित्र हैं। C# –

उत्तर

27
  1. तुम एक प्रकार या प्रकार सदस्य केवल एक ही विधानसभा में कोड के रूप में सुलभ घोषित करने के लिए कीवर्ड का उपयोग संशोधक internal उपयोग कर सकते हैं।

  2. आप System.Rutime.CompilerServices में परिभाषित InternalsVisibleToAttribute कक्षा का उपयोग कर सकते हैं ताकि एक ही असेंबली या केवल निर्दिष्ट असेंबली में कोड के लिए पहुंच योग्य प्रकार घोषित किया जा सके।

आप पहली बार उपयोग करने के रूप में आप किसी भी अन्य access modifier ऐसे private के रूप में इस्तेमाल करते हैं।

[assembly:InternalsVisibleTo("MyFriendAssembly", PublicKey="...")] 
internal class MyVisibleClass { 
    ... 
} 

इन दोनों ठीक ही सी # में friend के समकक्ष माना जा सकता है: बुद्धि के लिए: इस प्रकार

internal class MyClass { 
    ... 
} 

आप दूसरे का उपयोग करें।

protected तरीके से व्युत्पन्न कक्षाओं के लिए पहले से ही उपलब्ध हैं।

5

1) Internal, VB.NET 'मित्र' कीवर्ड की सी # बराबर है आपने अनुमान लगा लिया (के रूप में एक प्रतिस्थापन के लिए विरोध)

2) प्रयोग के रूप में

internal void Function() {} 
internal Class Classname() {} 
internal int myInt; 
internal int MyProperty { get; set; } 

3 इस प्रकार है), मूल रूप से, एक एक्सेस संशोधक है जो यह निर्धारित करता है कि कक्षा/कार्य/वैरिएबल/आंतरिक के रूप में चिह्नित संपत्ति की पहुंच यह है कि यह असेंबली के लिए सार्वजनिक है, और किसी भी अन्य असेंबली के लिए निजी

1

आंतरिक equiv है दोस्त की ओर से एक संरक्षित विधि केवल एक ही कक्षा के भीतर या विरासत से उपलब्ध है। यदि आप किसी उत्तराधिकारी से संरक्षित विधियों का पर्दाफाश करने का प्रयास कर रहे हैं, तो आप उन्हें सार्वजनिक तरीकों से लपेट सकते हैं।

1

आपका उप-वर्ग आपके द्वारा प्राप्त कक्षा के संरक्षित सदस्यों तक पहुंचने में सक्षम होगा।

क्या आप इन संरक्षित सदस्यों को किसी अन्य श्रेणी में पहुंच प्रदान करना चाहते हैं?

24

नहीं है, "आंतरिक" नहीं

दोस्त बताता है कि इस वर्ग के केवल एक द्वारा पहुँचा जा सकता, विशेष वर्ग है 'मित्र' (कम से कम सी ++ 'मित्र') के समान है।
आंतरिक निर्दिष्ट करता है कि यह वर्ग असेंबली में किसी भी वर्ग द्वारा पहुंच योग्य है।

+0

में सी मित्र कीवर्ड का कोई समतुल्य नहीं है, यह समतुल्य नहीं है, लेकिन यह वह तंत्र है जिसके द्वारा कक्षाओं का एक समूह दुनिया के बाकी हिस्सों में खुद को उजागर किए बिना मिलकर काम करता है। यह छोटे मॉड्यूल को भी प्रोत्साहित करता है और कक्षाओं के बीच 'स्पेगेटी' संबंधों को कम करता है। –

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