我们可以使用从WinForms控件继承的对象作为.NET Hashtable的键吗?

特克曼

我们使用在DLL中实现的组件。它继承自System.Windows.Forms.Control。我们需要将其用作.NET Hashtable对象中的键。

MSDN所述

Hashtable用作键的对象需要重写Object.GetHashCode方法(或IHashCodeProvider接口)和Object.Equals方法(或IComparer接口)。

但是我们正在讨论的控件没有自己的GetHashCode方法实现。Object.GetHashCode文档告诉我们

如果未重写GetHashCode,则通过调用基类的Object.GetHashCode方法来计算引用类型的哈希码,该方法将基于对象的引用来计算哈希码。

这是否意味着我们可以安全地在哈希表中按原样使用控件?

汉斯·帕桑特

执行此操作时,您应该只关心对象标识。换句话说,您永远不会希望两个控件映射到相同的哈希表插槽。永远不会精确到+/- 1%

Control类继承的默认Object.GetHashCode()和Object.Equals()实现已经很完美了,它们实现了对象引用身份。

当然,您应该这样做Dictionary<Control, Something>,Hashtable是8年前的事情

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我们可以使用类作为标题吗

来自分类Dev

我们可以使用主键的约束名称作为外键引用吗?

来自分类Dev

我们可以使用.NET System.Windows.Forms.Timer替换Excel VBA Application.onTime吗?

来自分类Dev

我们可以使用继承实现链接列表吗?

来自分类Dev

我们可以使用继承来实现链接列表吗?

来自分类Dev

我们可以使用图表控件绘制第三Y轴吗

来自分类Dev

我们可以使用图表控件绘制第三Y轴吗

来自分类Dev

我们可以使用<li>作为html中的表单元素吗?

来自分类Dev

我们可以使用参数包作为std :: vector初始化程序吗?

来自分类Dev

我们可以使用一行数据帧作为函数的输入吗?

来自分类Dev

我们可以使用()代替{}作为函数范围吗?

来自分类Dev

我们可以使用一行数据帧作为函数的输入吗?

来自分类Dev

我们可以使用<li>作为html中的表单元素吗?

来自分类Dev

我们可以使用外部硬盘作为内部硬盘吗

来自分类Dev

我们可以使用chef作为持续部署工具吗?

来自分类Dev

我们可以使用两个页面之间的IndexdDB对象存储吗

来自分类Dev

我们可以使用mongodb将对象值推送到$ project中吗

来自分类Dev

我们可以使用Web API发送内存流对象吗?

来自分类Dev

我们可以使用javascript中的字符串获取类的对象吗?

来自分类Dev

我们可以在其他地图中使用嵌套地图作为键吗?

来自分类Dev

我们可以使用Notepad ++解码URL吗?

来自分类Dev

我们可以使用动态管道吗?

来自分类Dev

我可以使用Jquery插入asp.net控件吗?

来自分类Dev

我们可以将ViewModel分配给ASP.Net MVC中的ViewData对象吗?

来自分类Dev

我们可以使用Google Earth插件API中的KML对象ID缩放到KML地标对象吗?

来自分类Dev

我们可以使用一个RowMapper对象而不是每次创建对象来获取结果吗?

来自分类Dev

我们可以使用boost :: multi_index :: multi_index_container作为多索引映射吗?

来自分类Dev

我们可以使用AWS Data Migration Service从Aurora Serverless复制作为源吗?

来自分类Dev

我们可以使用本地SQL Server作为AzureWebJobsStorage运行容器化的Azure函数吗?

Related 相关文章

  1. 1

    我们可以使用类作为标题吗

  2. 2

    我们可以使用主键的约束名称作为外键引用吗?

  3. 3

    我们可以使用.NET System.Windows.Forms.Timer替换Excel VBA Application.onTime吗?

  4. 4

    我们可以使用继承实现链接列表吗?

  5. 5

    我们可以使用继承来实现链接列表吗?

  6. 6

    我们可以使用图表控件绘制第三Y轴吗

  7. 7

    我们可以使用图表控件绘制第三Y轴吗

  8. 8

    我们可以使用<li>作为html中的表单元素吗?

  9. 9

    我们可以使用参数包作为std :: vector初始化程序吗?

  10. 10

    我们可以使用一行数据帧作为函数的输入吗?

  11. 11

    我们可以使用()代替{}作为函数范围吗?

  12. 12

    我们可以使用一行数据帧作为函数的输入吗?

  13. 13

    我们可以使用<li>作为html中的表单元素吗?

  14. 14

    我们可以使用外部硬盘作为内部硬盘吗

  15. 15

    我们可以使用chef作为持续部署工具吗?

  16. 16

    我们可以使用两个页面之间的IndexdDB对象存储吗

  17. 17

    我们可以使用mongodb将对象值推送到$ project中吗

  18. 18

    我们可以使用Web API发送内存流对象吗?

  19. 19

    我们可以使用javascript中的字符串获取类的对象吗?

  20. 20

    我们可以在其他地图中使用嵌套地图作为键吗?

  21. 21

    我们可以使用Notepad ++解码URL吗?

  22. 22

    我们可以使用动态管道吗?

  23. 23

    我可以使用Jquery插入asp.net控件吗?

  24. 24

    我们可以将ViewModel分配给ASP.Net MVC中的ViewData对象吗?

  25. 25

    我们可以使用Google Earth插件API中的KML对象ID缩放到KML地标对象吗?

  26. 26

    我们可以使用一个RowMapper对象而不是每次创建对象来获取结果吗?

  27. 27

    我们可以使用boost :: multi_index :: multi_index_container作为多索引映射吗?

  28. 28

    我们可以使用AWS Data Migration Service从Aurora Serverless复制作为源吗?

  29. 29

    我们可以使用本地SQL Server作为AzureWebJobsStorage运行容器化的Azure函数吗?

热门标签

归档