2010-04-15 85 views
0

我相信这是一个艰难的...变量绑定类

我想创建一个类的变量绑定的集合。

它的目的是这个样子:

Dim x as integer, s as string 
Dim c as new VBindClass 

x = 1 
s = "Hello" 

c.Add x, s 
Debug.Print c.value(x) '= 1 
Debug.Print c.value(s) '= "Hello" 

有一些功能,使我们能够取得一个唯一的ID为给定的变量,还可以获得基于可变/套?

更新:

最后,我已经成功地找到了答案。下面的代码:

Dim gh As Runtime.InteropServices.GCHandle = Runtime.InteropServices.GCHandle.Alloc(obj) 
Return Runtime.InteropServices.GCHandle.ToIntPtr(gh).ToInt64 
+2

是否有其他人无法理解这一点? – ChaosPandion 2010-04-15 03:06:09

回答

0

IF我正确的东西你正在寻找你可能想在使用

Dictionary Class

+0

我考虑过这个,但是'Debug.Print c.value(s)'=“Hello”'把我扔了。 – ChaosPandion 2010-04-15 03:14:06

1

不能直接绑定到方法变量来看看,因为理解:对它们没有反映,而且b:编译器通过时它们可能实际上不存在。此外,在实施条款中,如VBindClass)能够访问当前堆栈位置(因为两者相隔数英里)将会非常混乱。

您可以反思字段虽然(类/结构上的变量)使用反射(Type.GetFields(...),通常需要非公共|实例绑定标志)。

对于你的例子,“捕获的变量”可能被使用,但你需要使用lambda表达式来工作。但在C#方面:

int x = 1; 
Action a =() => Debug.WriteLine(x); 

// can now hand "a" anywhere, including to other classes, into events etc 

x = 27; 
//now invoke a **from anywhere** - it'll show the current value (27) 
a(); 
+0

谢谢。然而,我正在寻找一些函数返回一个唯一的ID(指针会是最好的),但我读过很多地方,.Net不是指针友好的。我只使用指针作为变量的唯一标识符,以便类能够获取/设置值。 仅供参考,我有一个VB6的课程,可以做到这一点,并将其迁移到VB.Net。 – Davis 2010-04-15 15:41:44