C#中VB6的ObjPtr的等价(功能)?

时间:2009-09-03 16:56:02

标签: c# .net vb6

有没有人知道C#是否具有VB6的等效ObjPtr或等效功能(请参阅下面的更多信息)?以下是关于ObjPtr devxthevbzone的信息的几个链接。

基本上我有第三方树视图,我需要通过它来获取特定节点,但节点具有的唯一(相关)信息是名称...但节点名称不需要是唯一的。因此,当我第一次走过它时,我需要为每个节点获得一个唯一的值,所以当我再次走过它时,我知道哪个是哪个。在旧学校VB6的日子里,我会使用ObjPtr。

有任何想法或暗示吗?

FK

4 个答案:

答案 0 :(得分:2)

如果它们是对象,为什么不直接存储对象引用?这些将是独一无二的。

您可以使用Object.ReferenceEquals(x, y)来确定您存储的引用是否指的是您刚从树中检索到的同一对象。

答案 1 :(得分:1)

如果treenode具有FullPath属性,则可以使用它来唯一标识树视图中的节点(Winforms Treeview具有FullPath属性)。如果2个兄弟姐妹中有相同的文字,这将不是唯一的。

OR

您可以使用TreeNode的Handle属性。

答案 2 :(得分:1)

我能想到的最接近的直接等价物是使用GCHandle来获取对象引用的IntPtr。

您需要为对象(GCHandle.Alloc)分配GCHandle,然后使用GCHandle.ToIntPtr转换为IntPtr。链接的文档显示了该过程。

答案 3 :(得分:-2)

GetHashCode应该可以很好地测试唯一值,除非第三方用你的场景中没有意义的东西覆盖了Object实现。

我会假设树中的节点将不仅仅是值字符串定义相等/哈希码,但你需要检查。