• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#利用delegate实现Javascript的each方法

C#利用delegate实现Javascript的each方法

作者:JackWang-CUMT 字体:[增加 减小] 来源:互联网 时间:2017-05-28

JackWang-CUMT 通过本文主要向大家介绍了马桶c的个人空间,c站,欲情 c max,维生素c,奔驰c200等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

C#中有很多易混淆的关键词,例如delegate,Func, Action和 Predicate。Func, Action和 Predicate本质上都是delegate,下面看一下delegate概念。

1 delegate概念
  delegate本质上就是一个指向函数的指针,可以指向不同的函数,只要函数的签名和代理一致即可。

2 delegate应用
  其实Func, Action, Predicate等都是delegate,只是特殊的delegate而已。delegate的巧妙应用,可以大大简化代码和提高灵活性。下面有一段Javascript代码,JS中经常使用数组的each方法来遍历数组并对其进行处理,如下所示:

var arr = [ "one", "two", "three", "four"];    
$.each(arr, function(){    
  alert(this);    
 });   
 //上面这个each输出的结果分别为:one,two,three,four
</div>

  那么在C#中如何通过delegate来定义一个数组each方法呢,可以通过传入方法来实现灵活的逻辑处理,静态ListEx类下有一个静态的Each方法,定义如下:

public static T[] Each<T>(T[] source, Func<T, T> function)
{

  T[] ret =new T[source.Length];
  int i = 0;
  foreach (T item in source)
  {
    ret[i]=function(item);
    i++;
  }
  return ret;
} 
</div>

那么我们可以定义一个字符串数组,并定义一个delegate作为函数参数进行传入,调用ListEx.Each方法:

var arr =new string[]{ "one", "two", "three", "four"};   
 var newArr= ListEx.Each<string>(arr,delegate(string x){
   x=x+"_do";
  return x;
 });
</div>

当然可以用表达式进行简化:

 var newArr2 = ListEx.Each<string>(newArr, (string x) => x = x + "_do");
</div>

我们也可以定义一个Where方法来过滤数组:

public static IList<T> Find<T>(IList<T> source, Predicate<T> predicate)
{
  List<T> ret = new List<T>();
  foreach (T item in source)
  {
    if (predicate(item))
    {
      ret.Add(item);
    }
  }
  return ret;
}
public static T[] Where<T>(T[] source, Predicate<T> predicate)
{
  IList<T> list=source.ToList<T>();
  IList<T> retList= Find<T>(list, predicate);
  return retList.ToArray<T>();
}
</div>

调用如下:

var newArr3 = ListEx.Where<string>(arr, x => x == "two");
</div>

3 区别概述

  •    Func是必须指定返回值的代理;
  •  Action为返回值为void的代理;
  •  Predicate为返回值为bool的代理;

以上就是本文的详细内容,希望对大家的学习C#程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#利用ReportViewer生成报表
  • C#基于正则去掉注释的方法示例
  • C#中new的用法及与override的区别分析
  • C#实现两个richtextbox控件滚动条同步滚动的简单方法
  • C# for循环的经典案例集锦
  • C#操作word的方法示例
  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法
  • C# WinForm制作异形窗体与控件的方法
  • C#实现Excel表数据导入Sql Server数据库中的方法
  • C#使用NPOI上传excel

相关文章

  • 2017-05-28c# 给button添加不规则的图片以及用pictureBox替代button响应点击事件的方法
  • 2017-05-28用C#操纵IIS(代码)
  • 2017-05-28解析XPath语法之在C#中使用XPath的示例详解
  • 2017-05-28C# 开发圆角控件(窗体)的具体实现
  • 2017-05-28C#实现读取DataSet数据并显示在ListView控件中的方法
  • 2017-05-28使用@符号让C#中的保留字做变量名的方法详解
  • 2017-05-28C#中无边框窗体移动的简单实例
  • 2017-05-28Windows系统中C#读写ini配置文件的程序代码示例分享
  • 2017-05-28C#编程总结(六)详解异步编程
  • 2017-05-28c#与mysql的连接

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#实现3D效果完整实例
    • c#动态编译执行对象方法示例 运用映射机制创建对象
    • C#隐式/显示实现接口方法详解
    • c#调用winrar解压缩文件代码分享
    • 解析C#自定义控件的制作与使用实例的详解
    • C#检查远程或本地磁盘使用率
    • 在Linux上运行C#的方法
    • C#中在WebClient中使用post发送数据实现方法
    • C#中实现多继承的方法
    • C#窗体读取EXCEL并存入SQL数据库的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有