网站建设山东聚搜网络,凡科的网站做seo比较难,网站开发与制作论文开题,棋牌软件定制开发目录
一、构造函数的作用
二、构造函数的特征
三、三种构造函数介绍
1、实例构造函数
2、静态构造函数
3、私有构造函数 一、构造函数的作用 构造函数用来创建对象#xff0c;并且可以在构造函数中对此对象进行初始化。构造函数具有与类相同的名称#xff0c;它通常用来…目录
一、构造函数的作用
二、构造函数的特征
三、三种构造函数介绍
1、实例构造函数
2、静态构造函数
3、私有构造函数 一、构造函数的作用 构造函数用来创建对象并且可以在构造函数中对此对象进行初始化。构造函数具有与类相同的名称它通常用来初始化对象的数据成员。 C#中构造函是在创建给定类型的对象时执行的类方法。构造函数是一个特殊的方法无论什么时候只要使用new运算符实例化对象并且不为 new 提供任何参数就会调用默认构造函数。除非类是静态的否则C#编译器将为无构造函数的类提供一个公共的默认构造函数以便该类可以实例化。在new实例化类的过程中会执行类内对应的构造函数进行初始化若无构造函数的则会自动调用无参默认构造函数静态构造函数会在创建第一个实例或引用任何静态成员之前将自动调用静态构造函数以初始化类。
构造函数的分类可以为实例构造函数、静态构造函数、私有构造函数 二、构造函数的特征
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{class Program{static void Main(string[] args){student st new student(10, lihua) { ID 10, number 5 };//构造函数可以在实例化过程中初始化私有的属性{ }大括号可以初始化公有属性的数据st.ccn();st.Info();Console.Read();}}public class student{private string name;private int age;public int ID;public int number;public student(){ }public student(int age,string name){this.age age;this.name name;}public void ccn(){Console.WriteLine(该学生的名字为name 年龄为age);}public void Info(){Console.WriteLine(该学生的学号为 ID 名次为 number);}}
}
构造函数可以有重载构造函数没有返回值连void也不能写。 构造函数的名称必须跟类名一样。构造函数的访问修饰符一般情况下访问修饰符为public当然也有private。构造函数不能直接被调用必须通过关键字new在创建对象时自动调用。不带参数的构造函数称为“默认构造函数”。无论何时只要使用new运算符实例化对象并且不为new提供任何参数就会调用默认构造函数。即创建构造方法函数后在类当中会生成一个一默认的无参数的构造函数但是当你写个新的构造函数之后不管是有参数的还是无参数的那个默认的无参数的构造函数都被干掉了。如果一个类中定义了有参构造函数实例化时需要调用无参构造函数这时我们就必须定义一个显式无参数构造函数否则运行会报错。
三、三种构造函数介绍
1、实例构造函数 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace _2022_07_19
{class Student{public Student(string name, int age, char gender, int id){this.Name name;this.Age age;this.Gender gender;this.Id id;}public string Name;public int Age;public char Gender;public int Id;public Student(string name, int age, char gender){this.Name name;this.Age age;this.Gender gender;}public void SayHello1(){Console.WriteLine(我叫{0},我今年{1},我是{2}生,我的学号是{3}。,Name,Age,Gender,Id);}public void SayHello2(){Console.WriteLine(我叫{0},我今年{1},我是{2}生。, Name, Age, Gender);}}
}注意1、定义了有参构造函数则不能再使用无参默认构造函数也就是在new实例化的时候必须在构造函数内传入参数。
2、构造函数可以重载在定义了有参构造函数后可以重写一个无参构造函数就可以使用无参构造函数了否则将报错。
2、静态构造函数 在C#中可以为类定义静态构造函数这种构造函数只执行一次。编写静态构造函数的主要原因是类有一些静态字段或属性需要在第一次使用类之前从外部源中初始化这些静态字段或属性。在定义静态构造函数时不能设置访问修饰符因为其他C#代码从来不会调用它它只在引用类之前执行一次另外静态构造函数不能带任何参数而且一个类中只能有一个静态构造函数它只能访问静态成员不能访问实例成员。 在类中静态构造函数和无参数的实例构造函数是可以共存的因为静态构造函数是在加载类时执行的而无参数的实例构造函数是在创建类的对象时执行的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{class Program{static void Main(string[] args){student st new student(10, lihua) { ID 10, number 5 };st.ccn();st.Info();Console.Read();}}public class student{private string name;private int age;public int ID;public int number;public student(){ }static student(){Console.WriteLine(这里是静态构造函数);}public student(int age,string name){this.age age;this.name name;}public void ccn(){Console.WriteLine(该学生的名字为name 年龄为age);}public void Info(){Console.WriteLine(该学生的学号为 ID 名次为 number);}}
} 静态构造函数不使用访问修饰符或不具有参数。在创建第一个实例或引用任何静态成员之前将自动调用静态构造函数以初始化类。不能直接调用静态构造函数。无法控制在程序中执行静态构造函数的时间。静态构造函数的一种典型用法是在类使用日志文件且将构造函数用于将条目写入到此文件中时使用。静态构造函数对于创建非托管代码的包装类也非常有用这种情况下构造函数可调用 LoadLibrary 方法。如果静态构造函数引发异常运行时将不会再次调用该函数并且类型在程序运行所在的应用程序域的生存期内将保持未初始化。 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApp2
{class Program{public static int X 0;//静态变量//实例构造函数public Program(){X 1;}//静态构造函数static Program(){X 2;//第二步,执行静态构造函数}//第一步,程序入口Main最先执行,然后执行静态变量public static int X 0static void Main(string[] args){Console.WriteLine(X);//结果为2Program dd new Program();//第三步,执行构造函数Console.WriteLine(X);//结果为1Console.ReadLine();}}
}调用类的静态函数时的执行顺序
静态变量静态构造函数实例构造函数静态变量静态构造函数静态函数 那么调用类的实例函数时的执行顺序则是:
非静态变量实例构造函数实例函数
3、私有构造函数 私有构造函数是一种特殊的实例构造函数。 它通常只在包含静态成员的类中。 如果类具有一个或多个私有构造函数而没有公共构造函数则在其他类除嵌套类外中无法进行实例化。 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApp2
{class Program{int i 0;private Program(){i 9;}static void Main(string[] args){Program ss new Program();Console.WriteLine($i{ss.i});//运行结果:i9Console.ReadLine();}}class person{//Program ddd new Program();//注释打开会报错错误信息不可访问因为它受保护级别限制。因为私有构造函数无法在类的外面实例化。}参考文献
【精选】C# 第五章『面向对象』◆第3节构造函数方法_c#构造方法-CSDN博客