反射を使用できます。たとえば、すべての myList_ 変数がクラスのプライベート インスタンス変数 (このイベント ハンドラーが定義されているフォームなど) である場合、次のようにすることができます。
FieldInfo[] fields = MyForm.GetType().GetFields(
BindingFlags.NonPublic |
BindingFlags.Instance);
次に、名前が一致するものを探す必要があります。名前でメンバーを調べる方法もあると思いますが、今は思い出せません。その他のオプションについては、 http://msdn.microsoft.com/en-us/library/System.Type_methods.aspxを参照してください。
より一般的なアプローチは、名前をリスト オブジェクトにマップする Dictionary を作成することです。フォームがロードされたときにこの辞書にデータを入力してから、次のように呼び出すことができます。
myFonction(dictionary["myList_" + myCombo.SelectedItem.ToString()]);
もちろん、手作業でディクショナリを作成する必要はありません。リフレクション (上で示したように) を使用して、実行時にディクショナリを作成できます。そうすれば、新しいリストを追加するときに、それを辞書に追加することを覚えておく必要はありません。同じ方法を使用して、コンボ ボックスに入力することもできます。
注: 私は、あなたが行っていることを優れた設計原則として必ずしも容認すると言っているわけではありません。それはそれができないという意味ではありません。またはよくやった。または合理的であること。
編集:あなたの呼び出しの参照に気付きました(あなたのコードをコピーして貼り付けました)。リストを参照で渡す理由がわかりません。いずれにせよ、辞書から取得している場合は参照渡しできません。繰り返しますが、なぜ参照渡しなのですか?