当我们引用第三方的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. Words in Coding Theory

    Lemma d(x.y) wt(c,0) self-dual self-orthogonal even prime wt(C) matrix column permute permutation ge ...

  2. @Valid springMVC bean校验不起作用

    @RequestMapping("/add2") public String addStudentValid(@Valid @ModelAttribute("s" ...

  3. 【原】Nginx添加Content-MD5头部压测分析

    如需转载,必须注明原文地址,请尊重作者劳动成果. http://www.cnblogs.com/lyongerr/p/5048464.html 本文介绍了webbenck安装,但是最后使用的是ab工具 ...

  4. 关于显示gif的一些方法与讨论

    http://www.2cto.com/kf/201404/292468.html http://www.eoeandroid.com/forum.php?mod=viewthread&tid ...

  5. QQ音乐API

    今天分享的是QQ音乐API 搜索歌曲API:http://s.music.qq.com/fcgi-bin/music_search_new_platform?t=0& amp;n={2}&am ...

  6. Unity AssetBundles and Resources指引 (一)

    本文内容主要翻译自下面这篇文章 https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-assetbundles-and- ...

  7. Unity3d - RPG项目学习笔记(一)

    通过NGUI和工程素材,学习泰课项目——黑暗之光. 现阶段心得整理: 一.开始界面 开始界面显示顺序为:①白幕渐隐:②镜头拉近:③标题渐显:④按键响应. 1.1 白幕渐隐 NGUI是一个非常强大的插件 ...

  8. 2016阿里巴巴校招offer面经

    前段时间参加阿里巴巴校招,非常荣幸,很快就拿到了offer,经历了三轮技术面试和一轮hr面,面试官们都非常nice,在此感谢一下各位面试官,你们辛苦了,百忙之中抽时间面试!为了帮助更多人想进阿里巴巴的 ...

  9. matlab 椭圆方程拟合

    拟合椭圆首先要知道各个点的坐标,然和带入如下公式: x = [59 136 58 137 57 137 56 137 55 138 54 139 53 140 52 141 51 142 51 143 ...

  10. 用Ultra ISO制作启动U盘装系统

    用UltraISO制作启动U盘可以在没有光驱的情况下装系统. 现在有大容量U盘的越来越多,而且不装光驱的也越来越多. 那么用U盘装系统成为了可能和必须,不多废话了. 首先,需要准备的有: Ultra  ...