zoukankan      html  css  js  c++  java
  • 构造函数带有this和base的作用

            #region "Constructor"
    /// <summary>
    /// 构造函数
    /// </summary>
    public NavigationUrl()
    : this(string.Empty, string.Empty, string.Empty, BtnType.Href, false)
    {

    }

    /// <summary>
    /// 重载构造函数
    /// </summary>
    /// <param name="bText">按钮的文字</param>
    /// <param name="bUrl">按钮的javascript/vbscript的Onclick字符</param>
    /// <param name="bHint">按钮提示信息</param>
    /// <param name="bType">按钮链接类型</param>
    /// <param name="bDefault">是否默认选中当前按钮</param>
    public NavigationUrl(string bText, string bUrl, string bHint, BtnType bType, bool bDefault)
    {
    _btnText = bText;
    _btnUrl = bUrl;
    _btnHint = bHint;
    _btnType = bType;
    _btnDefaultSelect = bDefault;
    }
    #endregion

     base是调用基类的构造方法,而this是调用类自身的构造方法。

    上面的例子中,当调用第一个构造函数时,执行完继续执行第二构造函数。

    构造函数中base与this的区别:

    namespace ConsoleApplication1
    {
    class A
    {
    private int x;

    public A()
    {
    Console.WriteLine("this is class A no arg here, value:{0}", x);
    }

    public A(int i)
    {
    x = i;
    Console.WriteLine("this is class A one arg here, value:{0}", x);
    }
    }

    class B : A
    {
    private int y;

    public B()
    {
    y = 1;
    Console.WriteLine("this is class B no arg here, value:{0}", y);
    }

    public B(int i)
    {
    y = i;
    Console.WriteLine("this is class B one arg here, value :{0}", y);
    }

    public B(int i, int b)
    : base(i)
    {
    y = b;
    Console.WriteLine("this is class B two arg here, value:{0}", y);
    }
    }

    class Program
    {
    static void Main(string[] args)
    {
    B s = new B(5, 8);
    Console.ReadLine();
    }
    }
    }

    上面例子输出的结果是:

    this is class A one arg here, value:5

    this is class B two arg here, value:8

    如果把base换成this, 结果是:

    this is class A no arg here, value:0

    this is class B one arg here, value:5

    this is class B two arg here, value:8

    可见:base是调用基类的构造方法,而this是调用类自身的构造方法。如果用base的时候调用的不是基类无参构造函数,那么在初始化的时候基类中的无参构造函数也会自动初始化。

  • 相关阅读:
    Linux系统:Centos7搭建Redis单台和集群环境
    Linux系统:Centos7安装Jdk8、Tomcat8、MySQL5.7环境
    Linux系统:常用Linux系统管理命令总结
    转--->svn的使用
    开发中常见的问题
    1.NSThread
    用NSOperation和NSOperationQueue实现多线程编程
    很实用的时间比对算法
    简单的IOS6和IOS7通过图片名适配
    nginx完美支持tp框架
  • 原文地址:https://www.cnblogs.com/xiaocai0923/p/2226485.html
Copyright © 2011-2022 走看看