无常

记录无常工作上的点点滴滴
posts - 106, comments - 342, trackbacks - 6, articles - 1

CODE:把jQuery的each(callback)方法移植到c#中

Posted on 2008-03-03 11:55 无常 阅读(359) 评论(2)  编辑 收藏 所属分类: dot net

jQuery中使用each(callback)方法可以很方便的遍历集合,如

$("img").each(function(i){
this.src = "test" + i + ".jpg";
});

就可以给给所有图像设置src属性。

c#中虽然有for(;;)和foreach(..in )可以完成此功能,

        static void Main(string[] args)
        {
            string[] arr = new string[] { "A", "B", "C", "D", "E" };
            foreach (string item in arr)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }

但和jQuery的each(callback)比起来还显得复杂了点。

现在使用c#3.0的扩展方法功能来将each(callback)移植到c#中来。然后我们就可以用这段代码替换上面的了。

        static void Main(string[] args)
        {
            string[] arr = new string[] { "A", "B", "C", "D", "E" };
            arr.Each(p => Console.WriteLine(p));
            Console.ReadKey();
        }

比foreach简便多了吧,实现代码就几行。

    public delegate void EachDelegate<T>(T arg);
    public static class IEnumerableExtension
    {
        public static void Each<T>(this IEnumerable<T> src, EachDelegate<T> callback)
        {
            foreach (T item in src)
            {
                callback(item);
            }
        }
    }
Tag标签: .net,code

Feedback

#1楼    回复  引用  查看    

2008-03-03 14:02 by WOW玩家      
public delegate void EachDelegate(T arg);
类库有个Action《T》

#2楼 [楼主]   回复  引用  查看    

2008-03-03 14:45 by 无常      
@WOW玩家
呵呵,又造轮子了,谢谢

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-03-08 15:07 编辑过