e心e意

导航

C#基础学习(类及其构造函数)

带参数的构造函数

namespace X2
{
    class Class1
    {
        int Id;
        string Name;
        public Class1()
        {
            Id = 28; Name = "Nemo";
        }
        //构造函数0
        public Class1(int val)
        {
            Id = val; Name = "Nemo";
        }
        //构造函数1,带参数的构造函数
        public Class1(String name)
        {
            Name = name;
        }
        public void SoundOff()
        {
            Console.WriteLine("Name{0},Id{1}",Name,Id);
        }
        //构造函数2,带参数的构造函数
    }
    class Program
    {
        static void Main(string[] args)
        {
            Class1 a = new Class1(),//调用构造函数0
            b = new Class1(7),//调用构造函数1
            c = new Class1("Bill");//调用构造函数2
            c.SoundOff();
            b.SoundOff();
            c.SoundOff();
        }
    }
}

静态构造函数

namespace 静态构造函数
{
    class RandomNumberClass
    {
        private static Random RandomKey;
        //私有静态字段
        static RandomNumberClass()
            //静态构造函数
        {
            RandomKey = new Random();  
            //初始化静态函数
        }
        public int GetRandomNumber()
        {
            return RandomKey.Next();
        }
    }
    /*类既可以有静态构造函数,也可以有实例构造函数
     如同静态方法,静态构造函数不能够访问所在类的实例成员
     因此也不能使用this访问器
     不能从程序中显示调用静态构造函数,他们有时被系统
     自动调用——在类的任何实例创建之前
     ——在类的任何静态成员被引用之前*/    
    class Program
    {
        static void Main(string[] args)
        {
            RandomNumberClass a = new RandomNumberClass();
            RandomNumberClass b = new RandomNumberClass();
            Console.WriteLine("Next Random #:{0}",a.GetRandomNumber ());
            Console.WriteLine("Next Random #:{0}", b.GetRandomNumber());
        }
    }
}

对象初始化列表

namespace 静态构造函数
{
    class RandomNumberClass
    {
        private static Random RandomKey;
        //私有静态字段
        static RandomNumberClass()
            //静态构造函数
        {
            RandomKey = new Random();  
            //初始化静态函数
        }
        public int GetRandomNumber()
        {
            return RandomKey.Next();
        }
    }
    /*类既可以有静态构造函数,也可以有实例构造函数
     如同静态方法,静态构造函数不能够访问所在类的实例成员
     因此也不能使用this访问器
     不能从程序中显示调用静态构造函数,他们有时被系统
     自动调用——在类的任何实例创建之前
     ——在类的任何静态成员被引用之前*/    
    class Program
    {
        static void Main(string[] args)
        {
            RandomNumberClass a = new RandomNumberClass();
            RandomNumberClass b = new RandomNumberClass();
            Console.WriteLine("Next Random #:{0}",a.GetRandomNumber ());
            Console.WriteLine("Next Random #:{0}", b.GetRandomNumber());
        }
    }
}

readonly修饰符和const的对比

namespace readonly修饰符
{
    /*readonly修饰符相当于申明一个字段为const,
     但不同的是const字段只能在字段的申明语句初始化,
     而readonly字段可以在下列任意位置设置它的值
     字段申明语句等同于const,而类的任何构造函数中,如果是
     static字段,初始化必须在static构造函数中完成
     const必须在编译区决定,而readonly可以在运行去决定
     */
    class Shape
    {
        readonly double PI = 3.1416;//初始化
        readonly int NumberOfSides;//未初始化
        public Shape(double side1, double side2)//构造函数
        {
            NumberOfSides = 4;//在构造中设定
        }
        public Shape(double sides, double side2, double side3)//构造函数
        {
            NumberOfSides = 3;//在构造中设定
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

 

posted on 2014-05-11 23:23  e心e意  阅读(127)  评论(0)    收藏  举报