转# C#的Extension扩展方法简介

				版权声明:本文为 ls9512 原创文章,转载请注明出处!					https://blog.csdn.net/ls9512/article/details/79713407				</div>
							            <div id="content_views" class="markdown_views">
						<!-- flowchart 箭头图标 勿删 -->
						<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg>
						<h1 id="扩展方法简介"><a name="t0"></a>扩展方法简介</h1>

扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C#、F# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法没有明显区别。

详见微软官方文档的定义和使用说明:扩展方法(C# 编程指南)

编写方法

定义一个测试用的类,并包含一个成员方法:

public class Module
{
    public void Func1()
    {
        // TODO..
    }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

定义一个静态类,编写一个静态方法,用于扩展Module类:

public static class TestExtension
{
    public static void Func2(this Module mod)
    {
        // TODO..
    }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

调用测试:

public void Test()
{
    var mod = new Module();
    mod.Func1();
    mod.Func2();
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

扩展方法的注意点:
* 需要写在一个静态类中
* 必须是一个静态方法
* 通过第一个参数和this关键字指定扩展的目标类型
* 不同类型的扩展方法不一定要写在同一个类中

如上所示,对Module类进行扩展后,可以和调用原生方法一样,调用扩展方法,在上层使用感受不到区别。通过这种方式,可以很好的对C#原生的类型,和不开源的第三方库,增加额外需求的、符合自己书写习惯的或者有效提高项目开发效率的新接口。

本系列博文主要介绍一些对C#原生类型的增强扩展,抛砖引玉,开拓思维,善用扩展方法,可以极大的提高开发效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值