c# - 将类成员作为函数参数传递
问题描述
我想在函数内部做一个嵌套循环,但是第二个循环的成员是由函数参数决定的,如何使它工作?像这样的东西:
List<Book> listBook;
List<Employee> listEmployee;
class Book
{
string title;
List <string> chapters;
}
class Employee
{
string name;
List <string> skills;
List <string> jobs;
}
void Loop(List<object> list, Member mem)
{
foreach (var i in list)
{
foreach (var j in i.mem)
{
string str = (string)j;
..................
}
}
}
void Main()
{
Loop(listBook, Book.chapters);
Loop(listEmployee, Employee.jobs);
}
解决方案
您可以将泛型方法与委托一起使用:
void Loop<T>(IEnumerable<T> list, Func<T, List<string>> member)
{
foreach (var i in list)
{
foreach (var j in member(i))
{
// ...
}
}
}
并像这样使用它:
void Main()
{
Loop(listBook, x => x.chapters);
Loop(listEmployee, x => x.jobs);
}