2009-12-16 55 views
1

我想要做的是能够取得一个键值对的字典,并使关键字变量的名称和值的值。 从搜索网络似乎是非常模糊的是否这是可能的。在vb.net中动态命名变量

PHP中的等效将是:

的foreach($数组作为$密钥=> $ VAL) { $$键= $ VAL; }

谢谢。

+0

为了什么目的?键本质上充当动态变量名称来访问已经存在的值。 – jball 2009-12-16 23:22:06

回答

1

您必须在编译时以.Net CLR语言(不要与.Net动态运行时语言混淆)声明变量。除此之外,如果你也知道变量的类型,通常会更好。 .Net程序员普遍认为this a good thing(该链接是针对C#的,但内容仍然适用)。

你想对这些变量做什么?告诉我们,我敢打赌,我们可以给你一个更好的方式来完成同样的事情。

+0

基本上我在思考一个Silverlight数据网格,这是我的理解,你不能绑定一个数组/列表/字典等到一组列,所以我在想,而不是一个丑陋的开关转换每个值在代码中的一个命名变量我认为它会动态地执行它更好。 – 2009-12-16 23:32:28

+0

我仍然需要更多地了解你的字典和你的字典中的对象类型。网格中的每一列是否与字典中的记录中的属性或字段(或从它们中的多个转换而来)相对应?我没有使用silverlight,但如果是这样,我知道你可以绑定到一个winforms或asp.net网格控件。 – 2009-12-17 00:05:08

+0

我绕了一圈,根本不是什么大麻烦,所以我不打扰它让自己更容易混淆为了稍微更干净的代码,谢谢你的帮助。 – 2009-12-17 00:15:35

0

这是可行的,但它是一个缓慢的操作。您必须使用reflection通过字符串表示来访问变量。

如果可能的话,使用Generics将对象本身存储为键将会快得多。在VB.NET with a Dictionary here中有一个例子。这样做意味着在运行时不需要投射或反射。此外,它允许intellisense直接在集合上工作,这是另一个关于泛型的真棒事情。