class Man : Person
  public Man(sring name)
    : base(name)
  {}这里的: base(name) {}是什么意思呢?
我没学过c#,看一些C#的程序遇到的,来教教大家。还有,在动态语言里
p = Man.new //这样就创建了man对象了。
为什么在c#里有这样的用法的呢?Person person = new Man
为什么创建一个man对象给person,要在前面用Person这样来声明的?

解决方案 »

  1.   

    关于base可以参考:http://msdn.microsoft.com/zh-cn/library/hfw7t1ce.aspx
      

  2.   

    base 关键字用于从派生类中访问基类的成员:•调用基类上已被其他方法重写的方法。•指定创建派生类实例时应调用的基类构造函数。基类访问只能在构造函数、实例方法或实例属性访问器中进行。从静态方法中使用 base 关键字是错误的。所访问的基类是类声明中指定的基类。例如,如果指定 class ClassB : ClassA,则无论 ClassA 的基类如何,从 ClassB 上访问 ClassA 的成员。
      

  3.   

    base 关键字用于从派生类中访问基类的成员:  
    调用基类上已被其他方法重写的方法。  
    指定创建派生类实例时应调用的基类构造函数。  
    基类访问只能在构造函数、实例方法或实例属性访问器中进行。  示例: 
    在派生类中调用基类方法。  
    // base 关键字 
    // 访问基类成员 
    using System; public class BaseClass 

        protected string _className = "BaseClass";     public virtual void PrintName() 
        { 
            Console.WriteLine("Class Name: {0}", _className); 
        } 
    } class DerivedClass : BaseClass 

        public string _className = "DerivedClass";     public override void PrintName() 
        { 
            Console.Write("The BaseClass Name is {0}"); 
            //调用基类方法 
            base.PrintName(); 
            Console.WriteLine("This DerivedClass is {0}", _className); 
        } 
    } class TestApp 

        public static void Main() 
        { 
            DerivedClass dc = new DerivedClass(); 
            dc.PrintName(); 
        } 
    } /**//* 
    控制台输出: 
    The BaseClass Name is BaseClass 
    This DerivedClass is DerivedClass 
    */ 
    在派生类中调用基类构造函数。  
    // keywords_base2.cs 
    using System; 
    public class BaseClass 

        int num;     public BaseClass() 
        { 
            Console.WriteLine("in BaseClass()"); 
        }     public BaseClass(int i) 
        { 
            num = i; 
            Console.WriteLine("in BaseClass(int {0})", num); 
        } 
    } public class DerivedClass : BaseClass 

        // 该构造器调用 BaseClass.BaseClass() 
        public DerivedClass() : base() 
        { 
        }     // 该构造器调用 BaseClass.BaseClass(int i) 
        public DerivedClass(int i) : base(i) 
        { 
        }     static void Main() 
        { 
            DerivedClass dc = new DerivedClass(); 
            DerivedClass dc1 = new DerivedClass(1); 
        } 
    } /**//* 
    控制台输出: 
    in BaseClass() 
    in BaseClass(1) 
    */ 注意点 从静态方法中使用 base 关键字是错误的。  
      

  4.   

    说明这个 Man 类继承了person 类 
      

  5.   

    这里是引用基类构造函数C# base和this
      

  6.   

    可以被自己的其它构造方法使用
    base常用于,在派生类对象初始化时和基类进行通信。  
    base可以访问基类的公有成员和受保护成员,私有成员是不可访问的
    base是为了实现多态而设计
    尽量少用或者不用base
      

  7.   

    1.base在这里是调用基类构造函数。
    2.不同于动态语言,在C#中,变量在使用之前必须先明确地声明。
      这里是声明了一个基类变量,然后new一个派生类对象赋给它。
      

  8.   

    base(name)是去调用基类(父类)的构造函数,该构造函数有一个string类型的参数
      

  9.   

    base()
    调用父类构造函数
    this()
    调用自己的另一个构造函数重载
      

  10.   

    : base(name)
    调用父类构造函数,是一种简化的写法。
      

  11.   

    base 调用基类构造函数  name是参数名称
      

  12.   

    此构造函数执行时先走它的基类的构造函数,这说明person这个基类也有一个参数为string的构造函数