日期:2014-05-18  浏览次数:20844 次

c# 匿名方法 泛型委托 List<string>
foreach (string s in citys)
  {
  List<string> tmpList =content.FindAll(delegate(string st) { if (st.Split(',')[st.Split(',').Length-1].CompareTo(s) == 0) return true; else return false; });
  DataTable dt = CreateTable(tmpList, content[0]);
  TableToExcel(dt,s);
  }

问题:
List<string> tmpList =content.FindAll(delegate(string st) { if (st.Split(',')[st.Split(',').Length-1].CompareTo(s) == 0) return true; else return false;
这里的匿名方法里的参数st怎么样知道是content里的成员呢?这是固定的吗?
一句话,就是说我不知道编译器是怎么样知道st是用什么值。

------解决方案--------------------
如果搂主还没明白的话,再补充一下,
楼主要理解List<T>泛型的FindAll方法的原理:它内部是进行循环匹配比较的,然后它每循环一次,都会回调一次我们传入的这个匿名委托,然后这个委托就是执行我们自定义的这个匹配条件的

你想想,FindAll方法内部如果不把这个st参数传出来给我们的话,那么我们怎么设置这个匹配条件呢?楼主明白了这一点,也就理解了st参数是怎么回事