涉及属性,继承,构造函数的小程序

using System;

namespace 继承实验
{
    class Program
    {
        class dog
        {
            private int Age;
            private string Name;
            public static string HomeTown;
            static dog()
            {
                HomeTown = "东北松花江上!"; //类构造器
            }
            public int GetAge
            {
                get { return Age; }
                set { value = Age; }
            }
             public string GetName
            {
                get { return Name; }
                set { value = Name; }
            }
            public dog(int Age)
            {
                this.Age = Age;         //实例构造器
            }
            public dog(string Name,int Age)
                : this(Age)
            {
                this.Name = Name;
            }
        }
        static void Main(string[] args)
        {
            dog d1 = new dog(5);
            Console.WriteLine("我的名字是{0},今年{1}岁了,我的家乡在{2}", d1.GetName, d1.GetAge,dog.HomeTown);//如果实例构造器,没有
            //初始化数据,值类型默认为0,引用类型默认为null
            dog d2 = new dog("芭比", 5);
            Console.WriteLine("我的名字是{0},今年{1}岁了,我的家乡在{2}", d2.GetName, d2.GetAge,dog.HomeTown);
            Console.ReadLine();
        }
    }
}

/*
实例对象初始化过程: 
为实例分配内存;
初始化附加成员,包括方法表指针和SyncBlockIndex变量(我们已经在 跟小静读CLR via C#(03)中已经提到过)。
调用实例构造器进行初始化。 
*/
/*
类构造器适用于引用类型(包括接口)和值类型,用来设置类的初始状态。类中并没有默认产生的类构造器,需要我们显式构造
类构造器只能有一个,不能进行重载。而且不能含参数。类构造器的目的是初始化类的静态成员,它只能访问静态成员,不能访问实例成员。
类构造器的访问限制是私有的,但是我们不能在类构造器前添加访问修饰符,private也不行,否则会产生编译错误,
这样做是为了防止开发人员调用该方法。它的调用是由CLR负责的,我们应该避免编写需要以特定顺序调用类构造器的代码。
类构造器不要调用其基类的类构造器。因为基类的静态成员并没有被派生类所继承,它只是编译时静态绑定。
类构造器的调用顺序和实例构造器相似的,首先静态字段被初始化,然后在构造其中被重新赋值。*/


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值