zoukankan      html  css  js  c++  java
  • C#3.0新特性之扩展方法介绍

     C#3.0扩展方法是给现有类型添加一个方法。现在类型即可是基本数据类型(如int,String等),也可以是自己定义的类。

    以下是引用片段:
      //Demo--1
      //扩展基本类型
      namespace TestExtensionMethods
      {
      // 必须建一个静态类,用来包含要添加的扩展方法
      public static class Extensions
      {
      //要添加的扩展方法必须为一个静态方法
      //此方法参数列表必须以this开始 第二个即为要扩展的数据类型,在这里就是要扩展string类型
      //第三个就无所谓了,就是一对象名,名字随便,符合命名规则即可
      //综合来讲,此方法就是要给string类型添加一个叫TestMethod的方法,此方法返回一个int型的值,即返回调用此方法对象的长度。
      public static int TestMethod(this string s)
      {
      return s.Length;
      }
      }
      //测试扩展方法类
      class Program
      {
      static void Main(string[] args)
      {
      string str = "Hello Extension Methods";
      //调用扩展方法,必须用对象来调用
      int len = str.TestMethod();
      Console.WriteLine(len);
      }
      }
      }
      //Demo--2
      //扩展自定义类型,同时展示了扩展方法带参数情况,以及方法重载
      namespace TestExtendMethod
      {
      public class Student
      {
      public string Description()
      {
      return "Student.............";
      }
      public string Description(string name)
      {
      return "the student’s name is "+name;
      }
      }
      // 必须建一个静态类,用来包含要添加的扩展方法
      public static class Extensions
      {
      //要添加的扩展方法必须为一个静态方法
      //此方法参数列表必须以this开始 第二个即为要扩展的数据类型,在这里就是要扩展Student类型
      //第三个就无所谓了,就是一对象名,名字随便,符合命名规则即可
      //综合来讲,此方法就是要给Student类型添加一个叫TestMethod的方法,此方法返回一个string型的值
      public static string TestMethod(this Student s)
      {
      return s.Description();
      }
      //要添加的扩展方法必须为一个静态方法
      //此方法参数列表第一个参数表示要扩展哪一个类,第二个参数才表示此扩展方法的真正参数
      //综合来讲,此方法就是要给Student类型添加一个叫TestMethod的方法,此方法带有一个string类型的参数,并返回一个string型的值
      public static string TestMethod(this Student s,string name)
      {
      return s.Description(name);
      }
      }
      //测试扩展方法类
      class Program
      {
      static void Main(string[] args)
      {
      Student stu = new Student();
      //调用扩展方法,必须用对象来调用
      string mes = stu.TestMethod();
      Console.WriteLine(mes);
      //调用带参数的扩展方法,只要传第二个参数就可以了
      //因为他的第一个参数其实只是为了表明是扩展哪个数据类型
      mes = stu.TestMethod("李沉舟");
      Console.WriteLine(mes);
      }
      }
      }


      总结:
           1.扩展方法是给现有类型添加一个方法
           2.扩展方法是通过 指定关键字this 修饰方法的第一个参数
          3.扩展方法必须声明在静态类中
         4.扩展方法要通用对象来调用
           5.扩展方法可以带参数

  • 相关阅读:
    kubernetes部署jenkins(Docker in Docker)及认证
    helm生产环境离线安装
    helm在kubernetes环境中搭建
    GlusterFs卷类型分析及创建、使用(结合kubernetes集群分析)
    glusterfs详解及kubernetes 搭建heketi-glusterfs
    kubernetes搭建Harbor无坑及Harbor仓库同步
    生产环境:ansible自动化部署kubernetes-1.14
    Gluserfs 架构详解【译】官网
    k8s部署高可用Ingress
    《A Survey on Transfer Learning》迁移学习研究综述 翻译
  • 原文地址:https://www.cnblogs.com/luluping/p/1207548.html
Copyright © 2011-2022 走看看