gpt4 book ai didi

c# - 在 c sharp 中广泛使用哈希表

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

在我的项目中,它是一种 tcp 服务器,我需要跟踪许多要在全局范围内使用的对象。我对哈希表上瘾了,目前我在我的项目中使用大约 10 个哈希表来存储不同类型的对象。

我的问题是,这样可以吗?我知道这是一个非常庞大的数据结构,但它使我的工作变得非常容易,而不是去寻找其他选择。例如,我有许多文本框组需要跟踪。所以我把它们都放在一个哈希表中,然后按我喜欢的方式使用它们。

在处理大型多线程应用程序时,这种方法是否是一种可接受且正常的编程方式。

最佳答案

从您的示例中看不清楚,但听起来好像您正在使用全局 HashMap 从程序中的任何位置访问您需要的对象(例如界面中的文本框)。

a) 这样的全局访问不是好的做法,对于接口(interface)对象更是如此。这些应该只能从前端模块访问,您的 TCP 服务器后端不会关心这些。

b) 在“功能组”中安排对象的正确方法是使用适当的类,而不是 5-10 个 HashMap 。为什么,在实践中?考虑这两种方法(在类似 python 的伪代码中):

# Interface is a hash-map of interface objects, like text-boxes. 'status' is the key
# in the map for one of those.
Interface['status'].setText("New status!")
# vs:
# Interface is a proper object with its own class, that handles the interface. It has
# all our text-boxes "inside" of it.
Interface.updateStatus("New status!")

现在,假设您改变主意并希望将状态表示为绘图而不是文本框。使用第二种方法很简单:您只需相应地调整 GUI,并更改 updateStatus 方法的行为方式!

使用第一种方法,您现在有一个乱七八糟的 hahsmap 访问一个不再存在的文本框,散布在您的代码中。

这是一种比散列图或全局对象更通用的做法 -- 它是关于使用具有明确定义的接口(interface)的对象,并且可以在不影响程序的其余部分的情况下在内部更改

关于c# - 在 c sharp 中广泛使用哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5482898/

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