2010-04-15 167 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