当我们引用第三方的DLL、或者Visual Studio自己的库的时候,或许会发现这样的一个情况,如果这个类型有一个XX的方法就好了。这时候我们可以用到扩展方法,是我们的代码更加灵活和高效。

这里我举例一下,比如在控制台程序(Console Application)我们想打印一个List<string>内所有的成员通常会怎么写么?

最通常的方法:

List<string> StringList = new List<string>();
foreach (var item in StringList)
{
Console.WriteLine(item);
}

这个劣势显而易见我们每次要打印时候都要不断的重复这一段代码,但是现在有一个捷径,我们来尝试“扩展方法”(Extension Method)。首先我们要来扩展List<string>,给它一个新的方法PrintMember

namespace PegasusZero.Extensions
{
public static class ListExtension
{
public static void PrintMember(this List<string> listInstance) {
foreach (var item in listInstance)
{
Console.WriteLine(item);
}
}
}
}

然后我们只要在引用之前引用这个namespace,就可以直接调用这个扩展的方法了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PegasusZero.Extensions; namespace PegasusZero.Demo.ExtensionMethod
{
class Program
{
static void Main(string[] args)
{
List<string> StringList = new List<string>();
StringList.Add("Copyright (c)2013 PegasusZero");
StringList.Add("Item 1");
StringList.Add("Item 2");
StringList.Add("Item 3");
StringList.Add("Item 4");
StringList.Add("Item 5"); StringList.PrintMember();
}
}
}

这面并没有使用Console.WriteLine(),但是我们可以看到Magic的事情发生了~ TADA!

下面是一个院子里大神的扩展集合贴,用大神自己的话他“走火入魔“了。(传送门<-狂戳这里去学习吧)

MSDN Reference:

http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx (英文)

http://msdn.microsoft.com/zh-cn/library/vstudio/bb383977.aspx (中文)

[C#] Extension Method 扩展方法的更多相关文章

  1. C# Note21: 扩展方法(Extension Method)及其应用

    前言 今天在开会时提到的一个概念,入职3个多月多注重在项目中使用C#的编程知识,一直没有很认真地过一遍C#的全部语法,当我们新人被问及是否了解Extension Method时,一时之间竟不能很通俗准 ...

  2. [译文]c#扩展方法(Extension Method In C#)

    原文链接: https://www.codeproject.com/Tips/709310/Extension-Method-In-Csharp 介绍 扩展方法是C# 3.0引入的新特性.扩展方法使你 ...

  3. [0] C# 扩展方法(Extension Method)

    有时有这样的情况,有一个类,你不能修改它,但你又想对它扩展(添加一个方法),这个时候就可以用到扩展方法了.请看下面的例子: using System;using System.Collections. ...

  4. c#编程指南(五) 扩展方法(Extension Method)

    C# 3.0就引入的新特性,扩展方法可以很大的增加你代码的优美度,扩展方法提供你扩展.NET Framewoke类的扩展途径,书写和规则也简单的要命. 编写扩展方法有下面几个要求: 第一:扩展方法所在 ...

  5. C# -- 扩展方法的应用(Extension Methods)

    当你有下面这样一个需求的时候,扩展方法就会起到作用:在项目中,类A需要添加功能,我们想到的就是在类A中添加公共方法,这个显而易见肯定可以,但是由于某种原因,你不能修改类A本身的代码,但是确实又需要增加 ...

  6. Extension Methods(扩展方法)

    在 OOPL 中,有静态方法.实例方法和虚方法,如下:   public sealed class String {      public static bool  IsNullOrEmpty(st ...

  7. .NET 扩展方法(Extention Method)的要点

    扩展方法Extention Method的主要介绍在:http://msdn.microsoft.com/zh-cn/library/bb383977(v=vs.100).aspx. 扩展方法的意义在 ...

  8. (转)C# -- 扩展方法的应用(Extension Methods)

    本文转载自:http://blog.csdn.net/zxz414644665/article/details/9793205 当你有下面这样一个需求的时候,扩展方法就会起到作用:在项目中,类A需要添 ...

  9. 动态linq表达式新方法,Dynamic LINQ Extension Method

    Remember those old posts on Dynamic LINQ? You are probably aware that Microsoft has made its impleme ...

随机推荐

  1. Understanding Asynchronous IO With Python 3.4's Asyncio And Node.js

    [转自]http://sahandsaba.com/understanding-asyncio-node-js-python-3-4.html Introduction I spent this su ...

  2. java中的static变量

    java中的static变量 例如 public static int num=0: num+=1;放在函数里面 调用一次变动一次.

  3. VS打包资源文件,转自推酷,请小星同学查看

    上篇博客把收费系统的总体设计进行了一遍讲解,讲解的同时掺杂了些有关.NET编译机制的总结.程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因 ...

  4. OpenStack学习

    ========================================== openstack的场景是什么 openstack的目的是把空闲的机器组织起来,经过虚拟化,租给用户使用. 出现的 ...

  5. Oracle逻辑读详解

    1.物理读(physical read) 当数据块第一次读取到,就会缓存到buffer cache 中,而第二次读取和修改该数据块时就在内存buffer cache 了 以下是例子: 1.1  第一次 ...

  6. jdk的反射机制

    反射的作用 1)在运行时判断任意一个对象所属的类: 2)在运行时构造任意一个类的对象: 3)在运行时判断任意一个类所具有的成员变量和方法: 4)在运行时调用任意一个对象的方法. 5)反射API可以获取 ...

  7. [转]sql利用游标循环,遍历表循环结果集

    用 游标(Cursor) + While循环 的方法, 对Customers表中的CompanyName列进行遍历 ) declare pcurr cursor for select distinct ...

  8. Orchard官方文档翻译(三) 通过zip文件手动安装Orchard

    原文地址:http://docs.orchardproject.net/Documentation/Manually-installing-Orchard-zip-file 想要查看文档目录请用力点击 ...

  9. 输出1——n的排列(深度优先搜索)

    样例输入: 3 样例输出: 123132213231312321 #include <stdio.h> int n; void dfs(int step,int* a,int* book) ...

  10. EXTJS 密码确认与验证

    extjs 框架是一个非常优秀的前端框架,提供了丰富的功能与炫丽的界面展示,在用 extjs 创建表单时,特别是在注册或修改密码的时候,要对密码进行确认,这里就密码确认一致性验证和大家分享自己的心得与 ...