扩展方法

转载 2012年03月31日 14:31:44
扩展方法是你能够向现有类型和自定义类型添加方法,而无需创建新的派生类型或者以其他方式修改原始类型

  扩展方法是一个特殊的静态方法,它定义在一个静态类中,但是可以在其他类型(我们要扩展的那个类)的对象上像调用实例方法那样调用,因此通过扩展方法可以在不修改一个类的前提下对一个类进行功能上的补充

  创建扩展方法

  扩展方法和一般静态方法定义类似,惟一的区别是在第一个参数的前面加上this关键字,同时第一个参数的类型也决定了扩展方法可以扩展的类型

  格式

  public static 返回类型 扩展方法名称(this 要扩展的类型sourceObj[,扩展方法参数列表])

  扩展方法的特点

  1:扩展方法是给现有类型添加一个方法

  2:扩展方法通过指定this关键字修饰方法的第一个参数

  3:扩展方法必须声明在静态类中

  4:扩展方法通过对象来调用

  5:扩展方法可以带参数

   实例

  using System;

  using System.Collections.Generic;
  using System.Linq;
  using System.Text;

  namespace _10_ExpandMethod
  {
      public static class AddClass
      {
          //扩展现有String类型
          public static string GetLower(this String str)
          {
              return str.ToLower();
          }
          //扩展自定义的Studengt类型
          public static string GetName(this Student stu,string strName)
          {
              return strName;
          }
      }

    //自定义的Student类型
      public class Student
      { 
        
      }

      class Program
      {
          static void Main(string[] args)
          {
              string strURL = "HTTP://WWW.BAIDU.COM";
              strURL = strURL.GetLower();
              Console.WriteLine(strURL);

              string strName = "小强";
              Student student = new Student();
              Console.WriteLine(student.GetName(strName));
              Console.ReadKey();
          }
      }
  }

  运行效果图

  

C#中的扩展方法学习总结

各位朋友大家好,我是秦元培,欢迎大家关注我的博客。最近偶然接触到了C#中的扩展方法,觉得这个语法特性是一个不错的特性,因此决定在这里系统地对C#中的扩展方法相关内容进行下总结和整理,因为博主觉得学习这...
  • qinyuanpei
  • qinyuanpei
  • 2015年12月07日 09:45
  • 6540

Kotlin编程之扩展方法

Kotlin编程之扩展方法
  • hexingen
  • hexingen
  • 2017年05月31日 21:59
  • 1178

Java8新特性——接口的默认方法(扩展方法)

今天是高考的日子,是大四师兄师姐答辩毕业的日子。一代又来,一代又去。好久没写博客,借此特殊日子整理一下前不久学java8新特性时写的代码,留下痕迹。(本博客的代码根据 java8新特性教程 学习整理,...
  • gdouchufu
  • gdouchufu
  • 2014年06月07日 21:13
  • 2571

c#扩展方法简介

扩展方法      如何知道的。这还得从项目的本身说起。该项目是一套的微软底层架构上搭建起来的。所有的框架以及控件的封装,数据的传递方法都是整体的框架封装好的。对常用的dropwodnlist控件...
  • han_yankun2009
  • han_yankun2009
  • 2014年05月08日 19:42
  • 3429

关于List的扩展方法

发现IEnumerable定义了很多扩展方法,这个是List的基类,所以也可以适用于List,整理如下。 1 首先要使用Linq using System.Linq 2 各函数分析如下:   ...
  • trobin
  • trobin
  • 2015年10月09日 15:35
  • 887

c# 扩展方法详解

扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。 它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。 扩展方法当然不能破坏面向对象封装的概念,所以只能是访问...
  • zyh_1988
  • zyh_1988
  • 2016年04月09日 10:18
  • 1689

C# 类、结构与扩展方法

C# 类、结构与扩展方法 我并非C#大神,只是用了这么久C#,会对这门语言有着一些自己的简介。为了总结一下自己对C#的认识,也为了能够和大家一起分享学习C#的过程,我打算把我的各种各样的理解写出来。 ...
  • Froser
  • Froser
  • 2014年03月26日 16:55
  • 1657

C#扩展方法示例(this关键字)

扩展方法三要素: 静态类、静态方法、 this关键字。 本文导读:扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。 它们的第一个参数指定该方法作用于哪个类型,并且该参数以 th...
  • Denghejing
  • Denghejing
  • 2016年09月27日 21:14
  • 2010

为JQuery扩展一个对象方法

应项目需求,对JQuery进行了一个扩展,需求如下: 项目中需要在浏览器右下角提示操作错误和系统提示内容,并有滑动移出和关闭的效果,所以自己写了一个效果还可以的弹出框来。就是给JQuery添加了一个方...
  • joyksk
  • joyksk
  • 2017年05月03日 19:42
  • 522

扩展js原生对象的正确姿势

个人不推荐修改原生对象。但是,总是不可避免的需要做一些不合理的事情。...
  • wp270280522
  • wp270280522
  • 2015年05月14日 17:54
  • 1706
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:扩展方法
举报原因:
原因补充:

(最多只允许输入30个字)