• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[C#]ExtensionMethod扩展方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

当我们引用第三方的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 (中文)


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
eclipse+cygwin+cdt搭建c/c++开发环境发布时间:2022-07-13
下一篇:
动态调用WebService(C#)(非常实用)发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap