在C# 3.0中有一个很常见的对IEnumerable<T>进行操作的For Each Loop扩展函数,这个扩展函数基本在每一本教授LINQ的书中都被提到过,定义如下
public static void ForLoop<T>(this IEnumerable<T> s, Action<T> ac)
{
foreach (var x in s)
{
ac(x);
}
}
这个扩展函数的目的是为了简化一般的Loop循环操作,正常的写法是这个样子,比如我要打印string[]里面每一个字符的值,一般是这么写
string[] x;
foreach(var c in x)
{
Console.Write(c);
}
很烦人,如果利用上边的扩展函数,我可以这样写:
string[] x;
x.ForLoop(s=>Console.Write(s))
简单优美。
但是因为VB2008不支持匿名函数,我没法用相似的简单方法定义并且使用这个扩展函数(定义可以,但是没法使用)
当然VB2010作了重大改进,除了语法上保持极其啰嗦的特性之外,C#2008的功能它基本都支持了
public static void ForLoop<T>(this IEnumerable<T> s, Action<T> ac)
{
foreach (var x in s)
{
ac(x);
}
}
这个扩展函数的目的是为了简化一般的Loop循环操作,正常的写法是这个样子,比如我要打印string[]里面每一个字符的值,一般是这么写
string[] x;
foreach(var c in x)
{
Console.Write(c);
}
很烦人,如果利用上边的扩展函数,我可以这样写:
string[] x;
x.ForLoop(s=>Console.Write(s))
简单优美。
但是因为VB2008不支持匿名函数,我没法用相似的简单方法定义并且使用这个扩展函数(定义可以,但是没法使用)
当然VB2010作了重大改进,除了语法上保持极其啰嗦的特性之外,C#2008的功能它基本都支持了