【问题标题】:Dynamically named variables in vb.netvb.net 中的动态命名变量
【发布时间】:2009-12-16 23:16:06
【问题描述】:

我想做的是能够获取键值对字典,并将键作为变量的名称,将值作为值。 从网上搜索似乎很模糊这是否可能。

PHP 中的等价物是:

foreach($array as $key=>$val) { $$key = $val; }

谢谢。

【问题讨论】:

  • 目的是什么?键本质上充当动态变量名称来访问值。

标签: vb.net


【解决方案1】:

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

您想对这些变量做什么?告诉我们,我敢打赌,我们可以为您提供更好的方法来完成同样的事情。

【讨论】:

  • 基本上我在考虑silverlight数据网格,我的理解是你不能将数组/列表/字典等绑定到一组列,所以我在考虑而不是拥有一个丑陋的开关,它将每个值转换为代码中的命名变量,我认为动态执行会更好。
  • 我仍然需要更多地了解您的网格和字典中的对象类型。网格中的每一列是否对应字典中记录中的一个属性或字段(或多个字段的转换)?我没有使用 Silverlight,但如果是这样,我知道您可以将其绑定到 winforms 或 asp.net 网格控件。
【解决方案2】:

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

如果可能的话,使用泛型将对象本身存储为键会快得多。 VB.NET with a Dictionary here 中有一个例子。这样做意味着在运行时不需要强制转换或反射。此外,它还允许智能感知直接处理集合,这是泛型的另一个很棒的事情。

【讨论】:

    猜你喜欢
    • 2010-10-20
    • 2011-10-21
    • 2014-01-18
    • 2018-05-06
    • 2011-08-18
    • 2013-03-25
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    相关资源
    最近更新 更多