gpt4 book ai didi

c# - 使方法/属性对一个类可见,对其他类隐藏

转载 作者:太空狗 更新时间:2023-10-29 21:00:34 26 4
gpt4 key购买 nike

我有一个 Server 类,它与 IRC 的服务器连接对话。它包含已知 User 的列表,并根据需要创建它们。

我有两个涉及 User 类的问题:

  1. 任何人都可以创建User 的实例。我只希望 Server 类能够执行此操作。
  2. 如果用户(User 描述的事物)更改了他/她的姓名(或其他信息,如加入的 channel ),Server 类可以自行更改。但是,其他类也可以!我想禁止其他类(class)接触此信息(使其对他们只读)。

我该如何解决这两个问题?在 C++ 中,可以通过使用 friend 关键字并将 ctor 和 setName(等等)设为私有(private)来解决。

是否有 C# 关键字可以允许特定类访问特定方法?这将解决我的问题。

最佳答案

老实说,我发现源自 C++ 的 friend 访问是不良设计的征兆。你最好修复你的设计。

首先,谁真正关心是否有人创建了用户?真的有关系吗?我问这个是因为有时我们程序员似乎会担心一些根本不会发生的事情,或者即使发生了,也没关系。

如果您真的很在意,请执行以下操作之一:

  • 让用户成为一个界面。服务器可以实例化一个实现它的私有(private)类;或
  • 使 User 成为 Server 的内部类,没有公共(public)构造函数,因此只有 Server 可以实例化它。

可见性黑客攻击(C++ 中的 friend 就是其中之一,Java 中的包访问都是很好的例子)只是在自找麻烦,而不是一个好主意。

关于c# - 使方法/属性对一个类可见,对其他类隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/550268/

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