您可以使用反射。例如,如果所有 myList_ 变量都是类的私有实例变量(例如定义此偶数处理程序的表单),那么您可以执行以下操作:
FieldInfo[] fields = MyForm.GetType().GetFields(
BindingFlags.NonPublic |
BindingFlags.Instance);
然后,您必须寻找一个名称匹配的人。我认为有一种方法可以按名称查找成员,但我现在不记得了。有关更多选项,请参阅http://msdn.microsoft.com/en-us/library/System.Type_methods.aspx。
更传统的方法是创建一个将名称映射到列表对象的字典。您可以在表单加载时填充此字典,然后调用如下内容:
myFonction(dictionary["myList_" + myCombo.SelectedItem.ToString()]);
当然,您不必手动填充字典:您可以使用反射(如我上面显示的)在运行时填充字典。然后,当您添加新列表时,您不必记住将其添加到字典中。您也可以使用相同的方法来填充组合框。
注意:我并不是说我必须宽恕你正在做的事情作为一个好的设计原则。这并不意味着它不能完成。或者做得很好。或者讲道理。
编辑:我刚刚注意到您通话中的ref(我复制并粘贴了您的代码)。我看不出有任何理由通过引用传递列表。无论如何,如果您从字典中获取它,则不能通过引用传递它——同样,您为什么要通过引用传递?