zoukankan      html  css  js  c++  java
  • 扩展方法的定义及使用

    扩展方法是定义在静态类内部的静态方法,开发人员可以像用实例方法那样来使用扩展方法。根据C#的语法规定,实例方法只能通过建立一个实例对象才能调用,不能通过类名来调用,相反的,静态方法只能通过类名来调用。而扩展方法提供了一个新的机制可以在对象实例上调用静态方法。扩展方法主要用于在不改变现有的类型代码下,扩展现有类型的功能。所扩展的功能只限于当前上下文有效,并不会对原有类型的定义的代码产生变化。

    注意:扩展方法类和要扩展的类须具有相同的命名空间。

    它的一般声明格式如下:

      public static class 类名

      {

        public static 返回类型 扩展方法名 (this 要扩展的类型 参数名)

        {

          函数体;

        }

      }

    通过示例说明:

    class Program
        {
            static void Main(string[] args)
            {
                Complex com = new Complex(10, -10);
                var real = com.ToDouble();//调用扩展方法
                Console.WriteLine("复数"+com.ToValue()+"转换为double类型:"+real);
                Console.Read();
            }
        }

        public static class Extensions
        {
            /// <summary> 
            
    /// /// 把复数类型转换为double类型(Complex的扩展方法) 
            
    /// /// </summary> 
            
    /// /// <param name="com">复数</param> 
            
    /// /// <returns>双精度值</returns> 
            public static double ToDouble(this Complex com)
            {
                return com.Real;
            }



            //把复数转换为字符串类型(Complex的扩展方法)
            /// </summary>
            
    /// /// <param name="com">复数</param>
            
    /// /// <returns>字符串值</returns>
            public static string ToValue(this Complex com)
            {
                string str = com.Real.ToString();
                if (com.Imag > 0)
                    str += "+";
                if (com.Imag != 0)
                    str += com.Imag + "i";
                return str;
            }
        }

        public class Complex 
        { 
            //实数 
            protected double real; 
            public double Real { get { return real; } } 
            //虚数 
            private double imag;
            public double Imag { get { return imag; } }
            public Complex(double real, double imag)
            {
                this.real = real;
                this.imag = imag;
            }
        }
  • 相关阅读:
    linux下内存检测工具valgrind
    c语言可变参数与宏定义
    rabbitmq学习之路-rabbitmqctl
    linux/mac下命令行rm回收站--rmtrash
    Python之路【第十一篇】: 进程与线程理论篇
    Python之路【第十一篇】: 进程与线程
    Git常用命令
    Python之路【第十篇】: python基础之socket编程
    Python之路【第九篇】:面向对象进阶
    Python之路【第八篇】:面向对象的程序设计
  • 原文地址:https://www.cnblogs.com/zhuawang/p/2200926.html
Copyright © 2011-2022 走看看