[C#] Extension Method 扩展方法
当我们引用第三方的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 扩展方法的更多相关文章
- C# Note21: 扩展方法(Extension Method)及其应用
前言 今天在开会时提到的一个概念,入职3个多月多注重在项目中使用C#的编程知识,一直没有很认真地过一遍C#的全部语法,当我们新人被问及是否了解Extension Method时,一时之间竟不能很通俗准 ...
- [译文]c#扩展方法(Extension Method In C#)
原文链接: https://www.codeproject.com/Tips/709310/Extension-Method-In-Csharp 介绍 扩展方法是C# 3.0引入的新特性.扩展方法使你 ...
- [0] C# 扩展方法(Extension Method)
有时有这样的情况,有一个类,你不能修改它,但你又想对它扩展(添加一个方法),这个时候就可以用到扩展方法了.请看下面的例子: using System;using System.Collections. ...
- c#编程指南(五) 扩展方法(Extension Method)
C# 3.0就引入的新特性,扩展方法可以很大的增加你代码的优美度,扩展方法提供你扩展.NET Framewoke类的扩展途径,书写和规则也简单的要命. 编写扩展方法有下面几个要求: 第一:扩展方法所在 ...
- C# -- 扩展方法的应用(Extension Methods)
当你有下面这样一个需求的时候,扩展方法就会起到作用:在项目中,类A需要添加功能,我们想到的就是在类A中添加公共方法,这个显而易见肯定可以,但是由于某种原因,你不能修改类A本身的代码,但是确实又需要增加 ...
- Extension Methods(扩展方法)
在 OOPL 中,有静态方法.实例方法和虚方法,如下: public sealed class String { public static bool IsNullOrEmpty(st ...
- .NET 扩展方法(Extention Method)的要点
扩展方法Extention Method的主要介绍在:http://msdn.microsoft.com/zh-cn/library/bb383977(v=vs.100).aspx. 扩展方法的意义在 ...
- (转)C# -- 扩展方法的应用(Extension Methods)
本文转载自:http://blog.csdn.net/zxz414644665/article/details/9793205 当你有下面这样一个需求的时候,扩展方法就会起到作用:在项目中,类A需要添 ...
- 动态linq表达式新方法,Dynamic LINQ Extension Method
Remember those old posts on Dynamic LINQ? You are probably aware that Microsoft has made its impleme ...
随机推荐
- Words in Coding Theory
Lemma d(x.y) wt(c,0) self-dual self-orthogonal even prime wt(C) matrix column permute permutation ge ...
- @Valid springMVC bean校验不起作用
@RequestMapping("/add2") public String addStudentValid(@Valid @ModelAttribute("s" ...
- 【原】Nginx添加Content-MD5头部压测分析
如需转载,必须注明原文地址,请尊重作者劳动成果. http://www.cnblogs.com/lyongerr/p/5048464.html 本文介绍了webbenck安装,但是最后使用的是ab工具 ...
- 关于显示gif的一些方法与讨论
http://www.2cto.com/kf/201404/292468.html http://www.eoeandroid.com/forum.php?mod=viewthread&tid ...
- QQ音乐API
今天分享的是QQ音乐API 搜索歌曲API:http://s.music.qq.com/fcgi-bin/music_search_new_platform?t=0& amp;n={2}&am ...
- Unity AssetBundles and Resources指引 (一)
本文内容主要翻译自下面这篇文章 https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-assetbundles-and- ...
- Unity3d - RPG项目学习笔记(一)
通过NGUI和工程素材,学习泰课项目——黑暗之光. 现阶段心得整理: 一.开始界面 开始界面显示顺序为:①白幕渐隐:②镜头拉近:③标题渐显:④按键响应. 1.1 白幕渐隐 NGUI是一个非常强大的插件 ...
- 2016阿里巴巴校招offer面经
前段时间参加阿里巴巴校招,非常荣幸,很快就拿到了offer,经历了三轮技术面试和一轮hr面,面试官们都非常nice,在此感谢一下各位面试官,你们辛苦了,百忙之中抽时间面试!为了帮助更多人想进阿里巴巴的 ...
- matlab 椭圆方程拟合
拟合椭圆首先要知道各个点的坐标,然和带入如下公式: x = [59 136 58 137 57 137 56 137 55 138 54 139 53 140 52 141 51 142 51 143 ...
- 用Ultra ISO制作启动U盘装系统
用UltraISO制作启动U盘可以在没有光驱的情况下装系统. 现在有大容量U盘的越来越多,而且不装光驱的也越来越多. 那么用U盘装系统成为了可能和必须,不多废话了. 首先,需要准备的有: Ultra ...