概述

本节主要解说扩展方法,涉及LinQ的详细知识不多。

扩展方法的描写叙述

.net framework为编程人员提供了非常多的类,非常多的方法,可是,不论.net
framework在类中为我们提供了多么多的方法,有时候仍然不能满足我们的需求,比如:你想让字符串对象具有ToPascal方法,含义就是将字符串转化为Pascal格式,并返回,我们知道,.net
framework提供的String类中并没有为我们提供对应的方法,此时,我们应该怎么做才干够达到我们的目的呢?有人说能够继承String类,这个不行,由于.net
framework提供的类都是finnal类,终于类,不能被继承,那么,怎么样才干够解决问题呢?此时,就出现了扩展方法

扩展方法的目的和优点

为现有类提供一些额外的方法,这样做的优点就是,原有类不须要又一次编译生成,仅仅须要在程序中引入一些额外的dll就能够了

扩展方法的使用

为String类加入一个ToPascal方法,实现将自己格式化为Pascal格式的字符串并返回

    //扩展方法的定义
public static classExtraClass{//静态类,类名任意
public static String ToPascal(this string s) {
stringstrName = s.Substring(0, 1).ToUpper() +s.Substring(1).ToLower();
return strName;
}
}
//扩展方法的使用
String strName="GreenHill";
strName.ToPascal();//返回的结果为Pascal格式的字符串
解释
string:返回值的类型;
ToPascal:扩展的方法名;
this string:扩展全部类;
s:对象名;

注意:在使用String类的ToPascal方法时,必需要在程序中引入ExtraClass类

上面的这样的方式是没有參数的写法,那么有參数的怎么写呢?有兴趣的能够下去自己查查,相信在读了这一篇博客的基础上,再学习扩展方法的其他详细的定性时,会变得很轻松。

扩展方法和LinQ的关系

扩展方法是实现LinQ的基础,由于LinQ的详细实现就是通过扩展方法实现的,也就是说LinQ就是往.net
framework的原有的一些类上加入了一些扩展方法,从形式来说,达到了一种通过使用不同对象的同样方法,实现一样的目的。

总结

在实际的应用中,为.net framework中的类扩展一些方法是不经常使用的,最起码我如今在实际的项目中没用过,所以,对于上面扩展方法的描写叙述的需求,我们要站在还有一个高度看,也就是说,扩展方法是微软为了引入LinQ而作的工作,扩展方法的真正目的是为了LinQ。

LinQ—扩展方法的更多相关文章

  1. Linq扩展方法之Aggregate 对序列应用累加器函数

    Linq扩展方法之Aggregate  对序列应用累加器函数; 函数模板:// 函数名:对序列应用累加器函数. // Parameters:参数要求 // source:要聚合的 System.Col ...

  2. 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法

    比如Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>&g ...

  3. 用LinQ扩展方法,泛型扩展方法,实现自定义验证字符是否空、对象是否为null,及泛型约束使用,Action的使用

    一.Linq扩展方法 1.扩展方法必须是静态方法.扩展方法所在的类必须是静态类 2.扩展方法里面的参数必须制定this关键字,紧跟需要扩展的类型,如下: 二.泛型约束 1.使用泛型的原因,是在不知道需 ...

  4. ABP框架源码中的Linq扩展方法

    文件目录:aspnetboilerplate-dev\aspnetboilerplate-dev\src\Abp\Collections\Extensions\EnumerableExtensions ...

  5. 【手记】走近科学之为什么JObject不能调用LINQ扩展方法

    Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>> ...

  6. Linq扩展方法获取单个元素

    在使用Linq 提供的扩展方法时,First(OrDefault), Single(OrDefault), Last(OrDefault)都具有返回单个元素的功能.MSDN对这些方法的描述只有功能说明 ...

  7. Linq扩展方法之All 、Any

    // Summary: // 确定序列中的所有元素是否满足条件. // Parameters: // source:包含要应用谓词的元素的 System.Collections.Generic.IEn ...

  8. Stackoverflow 珠玑:用于分组的 LINQ 扩展方法

    从 stackoverflow.com 上抄来的,将 IEnumerable 中的元素进行切分的方法,无动态内存分配,地球上最快的实现: public static class LinqExtensi ...

  9. C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询

    1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法 ...

随机推荐

  1. a web-based music player(GO + html5)

    github 住址:https://github.com/codercheng/music-player 后台是用GO (windows/ linux 都能够),前端是HTML5 推荐用chrome浏 ...

  2. Docker contanier comunication with route

    2台宿主机,hslave1 192.168.1.153, hslave2 192.168.1.154 修改网段 docker0默认网段是172.17.0.0/16,修改154机器的docker0的网段 ...

  3. MVC中使用SignalR

    MVC中使用SignalR打造酷炫实用的即时通讯功能附源码   前言,现在这世道写篇帖子没个前言真不好意思发出来.本贴的主要内容来自于本人在之前项目中所开发的一个小功能,用于OA中的即时通讯.由于当时 ...

  4. KMP算法(转)

    KMP算法 在介绍KMP算法之前,先介绍一下BF算法. 一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个 ...

  5. nginx做反向负载均衡,后端服务器获取真实客户端ip(转)

    首先,在前端nginx上需要做如下配置: location / proxy_set_hearder host                $host; proxy_set_header X-forw ...

  6. iBatis多表查询

    <typeAlias alias="Product" type="com.shopping.entity.Product"/> <typeAl ...

  7. Poj 3517 And Then There Was One Joseph核心问题

    基本上纯Joseph核心问题,只是第一步多一件.m. 然后你就可以用获得的递推公式: Win(n) 代表n当个人的中奖号码, 然后,Win(n)必须相等Win(n-1).当一个人将在下一次删除队列. ...

  8. R语言数据分析系列六

    R语言数据分析系列六 -- by comaple.zhang 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候怎样下手分析,数据分析的第一步.探索性数据分析. 统计量,即统计学里面关注的数据集 ...

  9. View Component

    View Component 在之前的MVC中,我们经常需要类似一种小部件的功能,通常我们都是使用Partial View来实现,因为MVC中没有类似Web Forms中的WebControl的功能. ...

  10. Spring + Spring MVC + Hibernate

    Spring + Spring MVC + Hibernate项目开发集成(注解) Posted on 2015-05-09 11:58 沐浴未来的我和你 阅读(307) 评论(0) 编辑 收藏 在自 ...