C# में friend का समकक्ष
C++ में friend फंक्शन/क्लास प्राइवेट और प्रोटेक्टेड मेंबर्स को एक्सेस कर सकता है। C# में इसका सीधा समकक्ष नहीं है।
सबसे निकटतम समाधान: नेस्टेड क्लास
इनर क्लास आउटर क्लास के प्राइवेट मेंबर्स को एक्सेस कर सकती है:
class Outer {
private int secret = 42;
class Inner {
void AccessOuter(Outer outer) {
Console.WriteLine(outer.secret); // एक्सेस संभव
}
}
}
अन्य विकल्प:
- internal कीवर्ड: असेंबली लेवल पर एक्सेस (अलग असेंबली से नहीं)
- InternalsVisibleTo एट्रिब्यूट: विशिष्ट असेंबली को internal मेंबर्स का एक्सेस दें
- इंटरफेस/पैटर्न: आवश्यक कार्यक्षमता को पब्लिक इंटरफेस के माध्यम से एक्सपोज़ करें
[assembly: InternalsVisibleTo("FriendAssembly")]
नोट: C# एनकैप्सुलेशन को सख्ती से लागू करता है। "friend" जैसी सुविधा जानबूझकर नहीं दी गई ताकि डिज़ाइन क्लीन रहे।