好吧,我有以下课程:
- 玩家管理器(添加、移除等)
- 播放器(它可以做各种事情)
- 客户端(它包含发送数据、recv 等网络操作)。
播放器管理器有一个播放器类数组,客户端类是播放器的组合,具有私有访问权限,因为我不需要用户查看客户端界面。
一切都很好,除了我想使用数组固定长度而不是列表的问题。客户端类是在运行时确定的,如果我想初始化一个播放器,我需要直接在属性上设置它或使用 setter 方法,这迫使我将客户端组合设为公共。
List 在这个问题上工作得很好,因为我可以在 Player 类的构造函数上设置 Client 属性,但想法是使用数组固定长度,因为它更快。是否有任何解决方法可以将 Client 保持为私有并从 Player Manager 类中设置它?
public class PlayerManager
{
public Player[] players { get; set; }
public PlayerManager(int maxplayers)
{
players = new Player[maxplayers];
}
public void Add(Client client)
{
Player player = FindPlayerSlot();
player.client = client; //cant do this, client is private property
}
}
public class Player
{
private Client client { get; set; } //Need to hide this from user
//I can set a constructor here for set the client property, but this would
//force me to use a list.
}