2011-02-19 17 views
7

はちょうどそれの名前を知ることにより、変数の値を取得する方法は、次のように、あります:C#で名前で変数を取得

double temp = (double)MyClass.GetValue("VariableName"); 

は、私は通常、この

のような変数にアクセスした場合
double temp = MyClass.VariableName; 
+1

私は、あなたがこれを行うために必要なコンテキストについて興味があります。プロパティとしての値へのアクセスでは通常十分ではありません。 –

答えて

19

reflectionを使用できます。例えばPropertyNameMyClassのパブリックpropertyであり、あなたは、あなたは可能性がこのクラスのインスタンスがある場合:それはfield国民の場合

MyClass myClassInstance = ... 
double temp = (double)typeof(MyClass).GetProperty("PropertyName").GetValue(myClassInstance, null); 

:もちろん

MyClass myClassInstance = ... 
double temp = (double)typeof(MyClass).GetField("FieldName").GetValue(myClassInstance); 

あなたは注意する必要がありますし、その反射doesnのコストはかからない。直接のプロパティ/フィールドへのアクセスと比較して、パフォーマンス上のペナルティが生じる可能性があります。

+2

注意してください。これを頻繁に使用すると非常に遅いかもしれません。 –

+0

@Erno、はい、絶対に。 –

+0

リフレクションは10ケースのスイッチフィルタより遅くなるでしょうか? – Andreas

関連する問題