概述

本节主要解说扩展方法,涉及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. Nginx模块开发入门(转)

    前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并 ...

  2. Android中部署自己的su

    本人博客原文 首先把你的自己的su的放到Android应用程序project的assets文件夹,为了和系统的su区分,我自己的su文件叫做sur. 另外我这里没有考虑x86架构的cpu的手机. 废话 ...

  3. 杭州电 1052 Tian Ji -- The Horse Racing(贪婪)

    http://acm.hdu.edu.cn/showproblem.php? pid=1052 Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS ...

  4. 024找到二维阵列(keep it up)

    剑指offer在标题中:http://ac.jobdu.com/problem.php? pid=1384 题目描写叙述: 在一个二维数组中,每一行都依照从左到右递增的顺序排序.每一列都依照从上到下递 ...

  5. [ACM] ZOJ 3816 Generalized Palindromic Number (DFS,暴力枚举)

    Generalized Palindromic Number Time Limit: 2 Seconds      Memory Limit: 65536 KB A number that will ...

  6. Java它配备了一个很好的工具2

    Jconsole 本机java自带的系统monitor具,它也可以连接到的本地远程连接java process,联系java process申请后可查看CPU,内存,主题.GC事件,能帮忙看看系统是否 ...

  7. REST|RESTful初步认识

    工作中要用到jersey来实现restful风格的webservice.对于webservice另一定的认知(能够觉得是一种服务,远程调用的组件),可是对于restful笔者根本就木有了解过,rest ...

  8. 表与表的关系把RD搞乱了,记一个Procedure中的bug

    就是6张表的关联查询,写了一个存储过程,使用4层for来处理 bug:最后一个for中,两张表的关联条件少了一个,结果数据多查了. 排查办法:使用dbms_output.printline('');每 ...

  9. deepinmind(转)

    http://it.deepinmind.com/ 花名有孚,支付宝工程师 有希望加入支付宝的同学,可以把简历发到我的个人邮箱spidercoco@gmail.com

  10. 设计模式C++实现_1_Singleton设计模式(简单的实现)

    Singleton设计模式 思路如以下: Single.h #pragma once #include <iostream> #include <string> using n ...