zoukankan      html  css  js  c++  java
  • C# 扩展

    “扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。”
    
    这是msdn上说的,也就是你可以对String,Int,DataRow,DataTable等这些类型的基础上增加一个或多个方法,使用时不需要去修改或编译类型本身的代码。
    
     
    
    /// 扩展方法
    /// 1.0 扩展方法的第一个参数表示的是扩展的类型 要加上this开头
    /// 2.0 扩展方法本身是一个静态方法
    /// 3.0 扩展方法必须放在静态类中
    /// 4.0 扩展方法可以和实例方法构成方法重载,但是实力方法的调用优先级高于扩展方法
    /// 5.0 定义在父类的扩展方法可以被子类使用
     
    下列是扩展方法:
    public static string FmtDateTime(this DateTime now)
    {
    return now.ToString("yyyy-MM-dd");
    }
    
    /// <summary>
    /// 扩展的
    /// </summary>
    /// <param name="str"></param>
    /// <returns></returns>
    public static string ToLower(this string str,string s)
    {
    return str.ToLower() + "来自扩展"+s;
    }
    
    public static string GetPigName(this Pig pig)
    {
    return pig.Name + "来自扩展";
    }
    
    public static void Say(this Pig pig)
    {
    Console.WriteLine(pig.ToString());
    }
     
    那么,可以这样使用扩展方法:
     
    #region 7.0 扩展方法
    static void c07ExMethod()
    {
    DateTime time = DateTime.Now;
    
    ////在类中调用静态方法
    //Console.WriteLine(ExtMethodHelper.FmtDateTime(time));
    
    //扩张方法,语法糖(是给VS编译器用的,属于编译器语法,不属于C#语法)
    //本质上还是通过ExtMethodHelper.FmtDateTime()方法
    Console.WriteLine(time.FmtDateTime());
    
    
    //2.0 字符串的小写扩展方法与字符串本身的实例方法的优先级
    string str = "AB";
    Console.WriteLine(str.ToLower("扩展"));
    
    
    //3.0 扩展方法扩展子类,子类一样可以使用
    smallPig sm = new smallPig() { Name = "小猪继承自老猪" };
    Console.WriteLine(sm.GetPigName());
    
    }
    #endregion
     
  • 相关阅读:
    算法(Algorithms)第4版 练习 1.5.22
    基于RPC原理的dubbo
    java的动态代理机制详解
    xxxx interview
    mysql创建账号
    elasticsearch搜索集群基础架构
    zookeeper可视化管理工具node-zk-browser安装
    kafka监控搭建
    kafka集群安装
    zookeeper集群安装
  • 原文地址:https://www.cnblogs.com/miaoying/p/5443840.html
Copyright © 2011-2022 走看看