17

クラスGetValueGetConstantValueGetRawConstantValueメソッドの違いは何ですか? PropertyInfo残念ながら、MSDN のドキュメントは、この件に関してあまり明確ではありません。

4

1 に答える 1

24

GetConstantValueとはどちらもGetRawConstantValueリテラルでの使用を意図しています (constフィールドの場合を考えてください。ただし、意味的にはフィールド以外にも適用できます) -GetValue実行時に何かの実際の値を取得するものとは異なり、定数値 (GetConstantValueまたはを介し​​てGetRawConstantValue) は実行時ではありません。依存 - メタデータから直接です。

それでは、 と の違いにたどり着きGetConstantValueますGetRawConstantValue。基本的に、後者はより直接的で原始的な形式です。これは主にenumメンバー向けに表示されます。たとえば、次のものがあった場合:

enum Foo { A = 1, B = 2 }
...
const Foo SomeValue = Foo.B;

GetConstantValueSomeValueFoo.B; _ ただし、GetRawConstantValueSomeValue2。特に、GetConstantValueリフレクションのみのコンテキストを使用している場合は使用できません。値を にボックスFoo化する必要があるためです。これは、リフレクションのみを使用している場合は実行できません。

于 2013-08-07T09:13:18.800 に答える