- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想声明(只有)类 A 可以访问/操作类 B 的(部分)成员。当 C# 中不存在
?friend
时,如何实现这一点
最佳答案
I would like to declare that only class A can access/manipulate some of members of class B.
突出显示的词表示有问题的点。
首先,我假设“仅 A 类”实际上是指“仅 A 类和 B 类”。在 B 类中声明的成员中的代码始终可以访问 B 类的所有成员,因此 A 类永远不会是唯一可以访问 B 成员的类。
一种技术是使类 A 成为类 B 的唯一嵌套类。现在类 A 和类 B 是唯一可以访问类 B 的所有成员的类。但是,类 A 可以访问所有 B类成员;这不符合您的要求,即 A 类只能访问 B 类的一些成员。
另一种技术是使类 A 和类 B 都在同一个程序集中,并且只有 类在程序集中。现在您可以将您希望 A 访问的 B 成员标记为“内部”,并且只有类 A 能够访问它们,因为它是程序集中唯一的其他类。
可能这两种技术都不是您想要的。正如您所注意到的,C# 并未设计为具有 C++ 的“友元”功能。我的建议是让您希望从 A 访问的 B 成员成为内部成员。这使得当前程序集中的所有类型都可以访问它们,这些类型是由少数人编写的少量类型,而这些人都是您认识的。如果您有充分的、影响业务的理由强加此要求,您可以简单地要求他们不要使用 B 类。
C# 类型系统的设计初衷并不是为了能够表示和加强同事之间所有可能的关系; “B 类可以被 A 类使用,因为我信任 Albert,但我不希望在 C 类上工作的 Carol 能够重用我的工作”根本不是 C# 团队认为有值(value)的功能添加到类型系统。如果您对 Carol 使用 B 级有疑虑,请与 Carol 交谈。
关于c# - 如何在 C# 中模拟友谊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32586204/
我是一名优秀的程序员,十分优秀!