私は、このクラスの構造を変更することはできないんだけど、次のメンバ変数C#でメンバー変数の選択肢を保存するにはどうすればよいですか?
class SomeClass
{
int idx0_value;
int idx1_value;
int idx2_value;
//...
}
でクラスを使用しています。
私は以前に選択されたインデックスに対してチェックするために、このクラスのインスタンスを使用して、いくつかif-else
ステートメントを使用して変数に対応する値を代入しています:
if(indexIFoundEarlier == 0)
valueIWant = aSomeClass.idx0_value;
else if(indexIFoundEarlier == 1)
valueIWant = aSomeClass.idx1_value;
else
valueIWant = aSomeClass.idx2_value;
これはかなり非効率です。
C++では、関係するメンバーへの参照を効果的に保存することができましたが、C#ではこれはできません。これについてはさまざまなスレッドを読んでいます。
"SomeClass"の構造を変更せずに、私が行った選択をより良い(より効率的に)読む方法がありますか?
デコレータのデザインパターンを見てみましょう。 –
効率があまり問題にならない場合は、常にリフレクションを使用できます。 – Jashaszun
実行時にオブジェクトメンバーをプログラムで選択してアクセスすることについては、Stack Overflowに関する多くの質問があります。あなたの具体的な例では、リフレクションを使用するかアクセサーの代理人辞書を作成するのが適切かもしれませんが、そのような漠然とした言葉で質問することは不可能です。あなたのシナリオをはっきりと示す良い[mcve]を提供してください。あなたがすでに研究している具体的なテクニックと、これらのテクニックの1つ以上を実装する際に特に問題があったものについて説明してください。 –