为什么C#不提供C ++样式的“ friend”关键字?

在C ++朋友关键字允许class A指定class B作为其朋友。这允许Class B访问的private/ protected成员class A。


我从来没有读过任何有关为什么C#(和VB.NET)不包含此内容的信息。这个早期的StackOverflow问题的大多数答案似乎都在说它是C ++的有用组成部分,并且有充分的理由使用它。以我的经验,我必须同意。


在我看来,另一个问题实际上是在问如何friend在C#应用程序中执行类似的操作。尽管答案通常围绕嵌套类,但似乎并不像使用friend关键字那样优雅。


原始的《设计模式》一书在整个示例中都定期使用它。


因此,总而言之,为什么friendC#缺少它?在C#中模拟它的“最佳实践”方法是什么?


(顺便说一句,internal关键字不是同一回事,它允许整个程序集中的所有类访问internal成员,而friend允许您为某个类提供对另一个类的完全访问权限)


慕尼黑5688855
浏览 1395回答 4
4回答

陪伴而非守候

通过使用C#中的接口,您应该能够完成与“朋友”在C ++中相同的工作。它要求您明确定义在两个类之间传递的成员,这是额外的工作,但也可能使代码更易于理解。如果有人举了一个合理使用“朋友”的示例,而该示例不能使用界面来模拟,请分享一下!我想更好地了解C ++和C#之间的区别。
打开App,查看更多内容
随时随地看视频慕课网APP