c#扩展方法简介

 

扩展方法

 

   如何知道的。这还得从项目的本身说起。该项目是一套的微软底层架构上搭建起来的。所有的框架以及控件的封装,数据的传递方法都是整体的框架封装好的。对常用的dropwodnlist控件的数据绑定,这里就有使用的一些扩展方法的封装。怎么以前没有见过这个方法呢。跟过去才发现是扩展方法。

 

 

什么是扩展方法


 

    扩展方法能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异

 

如何编写扩展方法


 

   扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。 它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀 仅当您使用 using 指令将命名空间显式导入到源代码中之后,扩展方法才位于范围中。

 

看以下例子

 

using System;
usingSystem.Collections.Generic;
 
using MySpace;//注意:引入扩展方法的空间
 
namespace Con_1
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "{0}先生。".With("XuGang");
            Console.WriteLine("您好!" + str);
 
            //2调用集合的扩展方法
            str.ShowItems<char>();
        }
    }
}
 
namespace MySpace
{
    //扩展方法必须在非泛型静态类中定义
    public static class MyMethods
    {
        //注意:第一个参数使用“this”获得当前对象
        public static string With(this string_context, params string[] _args)
        {
            returnstring.Format(_context,_args);
        }
 
 
        //2为集合做扩展方法
        public static voidShowItems<T>(this IEnumerable<T> _al)
        {
            foreach (var item in _al)
            {
                Console.WriteLine(item);
            }
        }
    }
}
 


从上例子中可以看出

 

1  C# 只支持扩展方法,不支持扩展属性、扩展事件等;

 

2  方法名无限制,第一个参数必须带 this;

 

3  扩展方法的命名空间可以使用namespace System ,但不推荐;

 

4  定义扩展方法的类是静态类;

 

具体准则请参考

有关详细信息,请参阅 如何:实现和调用自定义扩展方法(C# 编程指南)

 

 小结: 


   这几天刚到公司,熟悉环境为主要。好些东西他们说了并不是马上就可以明白的。所以还是需要经常问旁边的同事

。用到的方法多是封装好的。所以看到这个觉得熟悉但是仔细看来,并不是。扩展方法再不要的地方还是尽量少用。避免出现错误。毕竟用的这些方法是平台设计人员几年的功底的。

 



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值