获取vb.net中对象引用的字符串表示形式

时间:2011-06-03 15:02:32

标签: vb.net hashtable tostring object-reference

我想制作一个对象引用的哈希表,我希望另一个对象的引用成为关键。我怎么能在vb.net中做到这一点?

在java中(假设我使用默认的toString方法,并且add()将字符串作为键,将对象ref作为值),这将是:

hashtable.add(obj1.toString(), obj2)

我不想使用vb.net gethashcode()函数,因为我希望对象的深层克隆具有不同的标识符。

一个相关的问题是vb.net中默认的toString是什么?

总结:如何在vb.net中获取表示对象引用的字符串?

3 个答案:

答案 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。