zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C# 构造函数简析

c# 构造函数 简析
2023-09-11 14:20:51 时间

构造函数:

每当创建结构时,将会调用其构造函数。类或结构可能具有采用不同参数的多个构造函数。 使用构造函数,程序员能够设置默认值、限制实例化,并编写灵活易读的代码。


实例构造函数:

1、构造函数的名字与类名相同。

2、使用 new 表达式创建类的对象或者结构时,会调用其构造函数。并且通常初始化新对象的数据成员。

3、类会有默认的构造函数(静态类没有),并使用默认值来初始化对象字段

4、构造函数可以有参数,可以以多态的形式存在多个构造函数


静态构造函数:

类或结构也可以具有静态构造函数,该静态构造函数初始化类型的静态成员。静态构造函数是无参数构造函数。如果未提供静态构造函数来初始化静态字段,C# 编译器将提供默认静态构造函数,该静态构造函数会将静态字段初始化为其默认值。

这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用。

私有构造函数:

私有化构造函数,是为了保护类不被实例化,保护类中除静态成员(想被外界访问的)外的成员变量, 属性,方法等不会被访问。

using System;
//using static System.Math; //double aa = PI;


namespace MianshiText
{
    class Test{
        public static string name = "moren";
        public int age = 0;

        //私有化外界访问不到
        private Test()
        {

        }

        //每次实例时被调用
        public Test(string name,int age)
        {
            Test.name = name;
            this.age = age;
        }

        //是类的构造函数,没有参数,只调用一次
        static Test()
        {
            name = "czhenya";
            //age = 15; //只能修改静态变量
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            //默认执行静态构造函数,输出值为:czhenya
            Console.WriteLine( Test.name);


            //无参构造函数已被私有化,编译出错
            //Test t2 = new Test(); 

            //调用带参构造函数
            Test t1 = new Test("chen", 15);
            Console.WriteLine("姓名:{0},年龄:{1}", Test.name, t1.age);

            Test.name = "ya";
            t1.age = 20;
            Console.WriteLine("姓名:{0},年龄:{1}", Test.name, t1.age);

            Console.ReadKey();
        }
    }
}