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的时候调用的不是基类无参构造函数,那么在初始化的时候基类中的无参构造函数也会自动初始化。

  • 相关阅读:
    cPanel设置自定义404错误页
    jquery鼠标移入某区域屏蔽鼠标滚轮 滚动滚动条
    阻止子元素继承父元素事件(郁闷我一晚上的问题!)
    告别码农,成为真正的程序员
    PHP中数组合并的两种方法及区别介绍
    理解OAuth 2.0[摘]
    mysql之触发器trigger 详解
    ThinkPHP Where 条件中使用表达式
    linux下利用curl监控网页shell脚本
    XUtils 3 使用
  • 原文地址:https://www.cnblogs.com/xiaocai0923/p/2226485.html
Copyright © 2011-2022 走看看