小编典典

为什么 C# 不提供 C++ 风格的“朋友”关键字?

all

所以总而言之,为什么 C# 中friend缺少,以及在 C# 中模拟它的“最佳实践”方式(或方式)是什么?

(顺便说一句,internal关键字 不是 一回事,它允许整个程序集中的 所有
类访问internal成员,同时friend允许您让某个类 完全访问 另一个


阅读 59

收藏
2022-06-16

共1个答案

小编典典

在编程中有朋友或多或少被认为是“肮脏的”并且容易被滥用。它破坏了类之间的关系并破坏了 OO 语言的一些基本属性。

话虽如此,这是一个不错的功能,我自己在 C 中使用过很多次;并且也想在 C# 中使用它。但我敢打赌,因为 C# 的“纯”OOness(与 C 的伪
OOness 相比)MS 决定因为 Java 没有朋友关键字 C# 也不应该(开个玩笑;))

严肃地说:内部不如朋友,但它确实完成了工作。请记住,您很少会不通过 DLL 将代码分发给 3rd
方开发人员;因此,只要您和您的团队了解内部类及其用途,就可以了。

编辑 让我澄清一下friend关键字如何破坏OOP。

私有和受保护的变量和方法可能是 OOP 中最重要的部分之一。对象可以保存只有它们可以使用的数据或逻辑的想法允许您编写独立于您的环境的功能实现 -
并且您的环境不能更改它不适合处理的状态信息。通过使用friend,您将两个类的实现耦合在一起——这比只耦合它们的接口要糟糕得多。

2022-06-16