首先,我是一个新手程序员。我学习了 AutoHotkey 脚本,一堆 c# 和一些或 c++。我的问题不是特定于语言或语法,而是一个概念。我将首先解释这种情况(任何代码都应该被解释为类似于伪代码)。
我最近的项目是一个即时通讯程序,有一个服务器和一个客户端。它们的工作方式如下:
服务器
- 将客户信息分配到 3 个不同的数组中(我不喜欢这样)
- NewConnection[skt]、userNick[nick]、nickFromSocket[skt]
客户
- 向服务器发送消息 > 服务器接收 > 服务器响应 > 客户端接收并将消息记录到聊天日志。
您可能已经注意到,数组 'userNick' 使用用户的实际昵称来代替传统的索引号(userNick[index])。这很重要,工作方式如下:
// New user has connected
skt = WINSOCK_getSkt()
NewConnection[skt] // Simple to parse with a loop: NewConnection.MaxIndex()
// Receive new user's nickname
skt = WINSOCK_getSkt()
nick = WINSOCK_getNick()
userNick[nick] = nick
nickFromSocket[skt] = nick
两次分配用户昵称背后的理论是避免使用循环来解析数组。这很简单并且可以实现,因为当客户端向服务器发送消息时,服务器可以看到套接字号(每个用户都是唯一的),使用该变量,我可以立即从 2 短行中获取用户的昵称:
// Get user's nickname
skt = WINSOCK_getSkt()
nick = nickFromSocket[skt]
我希望到目前为止一切都清楚。
问题
如何将所有这些转换为一个类,同时保持从数组中获取数据的速度?我知道使用类会更简单,也更合乎逻辑,但是当需要解析的用户越来越多时,我担心类的效率。对象/类中是否有等价物?感谢您抽出宝贵时间阅读本文。