gpt4 book ai didi

c# - 如何在 C# 中模拟友谊?

转载 作者:行者123 更新时间:2023-11-30 19:24:53 24 4
gpt4 key购买 nike

我想声明(只有)类 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com