2010-11-04 77 views
1

我想在類中設置一個變量。但我想動態選擇要設置的變量。如何在VB.NET中動態選擇和設置類變量

在PHP:

<?PHP 
class Foo { 
    var $Bar="Blah"; 
} 

$ClassVar = new Foo(); 
$Variable = "Bar"; 
$ClassVar->$Variable = "Poo"; 
echo "Output : ".$ClassVar->Bar; 
?> 

輸出:浦

我想要做相同的VB.NET

回答

1

在VB中你會使用一個字典來實現這一目標。

Dim x As New Dictionary(Of String, String)() 

x.Add("Bar", "Blah") 

Dim variable = "Bar" 
x(variable) = "Poo" 
Console.WriteLine(x("Bar")) 

雖然這更讓人聯想到PHP array。它實際上可能使用反射在VB中獲得與您的PHP代碼中相同的效果。但VB是一種不同的語言,在VB中你通常不會寫這樣的代碼。更強烈的是:當你發現自己在VB中編寫這樣的代碼時,它幾乎總是代碼設計中嚴重缺陷的跡象。

但只是爲了完整起見:

Dim obj As New Foo() 
CallByName(obj, "Bar", CallType.Let, "Poo") 

然而,當Bar事實上是一個屬性,而不是一個變量(它也可以用可變但是這更困難仍然)這僅適用。

+0

感謝您的回答。我正在編寫通用文本驗證功能。我想用這個來驗證這個值。 「酒吧」是我班的一個屬性。如果不使用這個,那麼你是否推薦另一種方法來做到這一點?順便說一下,我的班級有130個屬性。 – NeerPatel 2010-11-04 19:24:11

+0

您的班級有130個屬性?現在** **表示您的代碼架構存在根本性缺陷。任何班級都不應該在許多房產附近有任何地方。 – 2010-11-04 19:26:00