一、base
1、base的四种用途:
构造函数可以使用 base 关键字来调用基类的构造函数,基类的构造函数在执行构造函数块之前被调用。base 关键字可带参数使用,也可不带参数使用。构造函数的任何参数都可用作 base 的参数,或用作表达式的一部分。
在派生类中,如果不使用 base 关键字来显式调用基类构造函数,则将隐式调用默认构造函数(如果有的话)。
2、继承基类使用base
 隐式调用基类构造函数:如基类没有手动提供默认构造函数,base()调用出错。

 显示调用基类构造函数:子类构造函数必须指明调用哪个基类构造函数。
 
----------------------------------------------------------------------------------------------------

using System;
namespace myBase
{
 public class Test
 {
  public static void Main()
  {
   ChildContructor child =new ChildContructor();
   ChildContructor child2 =new ChildContructor("注意:");
  }  
 }
 public class BaseContructor
 {
  public string strName="我是父类";
  public BaseContructor()
  {
   Console.Write("基类默认构造函数");
  }  
  public BaseContructor(string s)
  {
   Console.Write(s+"基类含参构造函数");
  }  
  
 }
 public class ChildContructor:BaseContructor
 {
  public ChildContructor():base()
  {
   Console.Write("\t\t派生类构造函数调用基类默认构造函数(基类必须提供默认构造函数)\n\n");
  }
  public ChildContructor(string str):base(str)
  {
   Console.WriteLine("\t\t"+"这是派生类构造函数调用基类含参构造函数\n\n");
  }
 }  
}
----------------------------------------------------------------------------------------------------

using System;
public class BaseClass
{
    int num;

    public BaseClass()
    {
        Console.WriteLine("in BaseClass()");
    }

    public BaseClass(int i)
    {
        num = i;
        Console.WriteLine("in BaseClass(int i)");
    }

    public int GetNum()
    {
        return num;
    }
}

public class DerivedClass : BaseClass
{
    // This constructor will call BaseClass.BaseClass()
    public DerivedClass() : base()
    {
    }

    // This constructor will call BaseClass.BaseClass(int i)
    public DerivedClass(int i) : base(i)
    {
    }

    static void Main()
    {
        DerivedClass md = new DerivedClass();
        DerivedClass md1 = new DerivedClass(1);
    }
}
----------------------------------------------------------------------------------------------------

二、this 关键字
1、this的四种用途
限定被相似的名称隐藏的成员,例如:
public Employee(string name, string alias)
{
    this.name = name;
    this.alias = alias;
}
将对象作为参数传递到其他方法,例如:
 CalcTax(this);
声明索引器,例如:
public int this [int param]
{
    get { return array[param];  }
    set { array[param] = value; }
}
使用 this 关键字调用同一对象中的另一构造函数
public Employee(int weeklySalary, int numberOfWeeks)
    : this(weeklySalary * numberOfWeeks)
{
}
2、this注意:
构造函数可以使用 this 关键字调用同一对象中的另一构造函数。和 base 一样,this 可带参数使用也可不带参数使用,构造函数中的任何参数都可用作 this 的参数,或者用作表达式的一部分
由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。在静态方法中引用 this 是错误的。