我想制作一个对象引用的哈希表,我希望另一个对象的引用成为关键。我怎么能在vb.net中做到这一点?
在java中(假设我使用默认的toString方法,并且add()将字符串作为键,将对象ref作为值),这将是:
hashtable.add(obj1.toString(), obj2)
我不想使用vb.net gethashcode()函数,因为我希望对象的深层克隆具有不同的标识符。
一个相关的问题是vb.net中默认的toString是什么?
总结:如何在vb.net中获取表示对象引用的字符串?
答案 0 :(得分:2)
如果您希望对象引用是哈希表的键,那么只需使用该对象本身。
hashtable.Add(obj1, obj2)
要回答第二个问题,VB.Net中ToString
的默认实现是调用Object.ToString
。在.Net中,这将打印出基础实例的类型名称
答案 1 :(得分:0)
使用强类型词典会好得多:
Dim myDict As New Dictionary(Of myObject1Type,myObject2Type)
myDict(obj1) = obj2
答案 2 :(得分:0)
一种可能性(虽然我不能说我出于多种原因推荐这种方法)是使用.net等效的VB6 ObjPtr函数。基本上,您将对象固定在内存中,然后您可以检索该对象的内存地址(保证是唯一的)。
查看此帖子
http://forums.devx.com/showthread.php?t=122407
或者,如果我真的需要一个对象的唯一标识符,我可能会扩展该对象并添加一个“ObjectID”readonly属性,该属性总是为该对象的特定实例返回生成的GUID。
如果这些ID没有在任何地方持久化,你也可以创建一个单独的“IDGenerator”对象,它只是递增递增的int,并使用这些int作为对象的ID。但同样,你不会想要坚持那些int id,因为它们在你的应用程序运行时不会是唯一的。此外,根据您实例化的对象数量,您可能需要将其设为long int而不仅仅是int。