You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中如何将下拉菜单选项与哈希算法类关联?

关于VB.NET中哈希算法下拉选择与实例关联的疑问

我刚接触VB.NET,表述若有不当还请见谅。我并非寻求特定解决方案,而是希望得到模糊指导以自行探索解决方法,这不是作业,只是我觉得最有效的学习方式。

我需要一个下拉菜单来选择用于哈希文件的哈希算法,目前卡在如何将选中的选项与对应算法类的使用关联起来。理想情况下,我希望利用应用可用的库来填充菜单,但仍不确定后续如何使用选中的算法。

我曾考虑使用字典,以选项名称为键、算法类为值,但似乎不可行(至少我认为用反射不行)。以下是我尝试的大致思路;再次说明,我不是要代码修正或直接解决方案,而是想了解大家遇到此类情况时的做法。

Dim fh128 As FarmHash128 = New FarmHash128
Dim fh32 As FarmHash32 = New FarmHash32
Dim fh64 As FarmHash64 = New FarmHash64

Private ReadOnly AlgoDict As New Dictionary(Of String, Object)() From {
    {"FarmHash128", fh128},
    {"FarmHash32", fh32},
    {"FarmHash64", fh64}
}

但这似乎不对,也没让我有进展。非常感谢您的帮助!


编辑进展:

我有了一些进展;我之前的示例需要在字典中直接实例化算法对象。

AlgoDict = New Dictionary(Of String, Object) From {
    {"FarmHash128", New FarmHash128},
    {"FarmHash32", New FarmHash32}
}

但我觉得这不是个好办法,因为AlgoDict中还有更多算法;当字典实例化时,会创建每个算法的实例吗?还是仅在使用时才创建?另外,这似乎也让我无法在使用时传入参数:

Private CurrentA as Object
Private AlgoDict

AlgoDict = New Dictionary(Of String, Object) From {
    {"FarmHash128", New FarmHash128},
    {"FarmHash32", New FarmHash32}
}

Public Function Update(a As String, Optional s As ULong = 2088398552) As Object
    ' 在这里任何地方加入's'作为参数似乎都失败了;能不能更新实例的参数?
    Return AlgoDict.Item(a)
End Function

CurrentA = Update("FarmHash128", 123456)

内容的提问来源于stack exchange,提问作者tsz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:57:30