转载自微软相关官方文档;
每当创建类或结构时,将会调用其构造函数。 类或结构可能具有采用不同参数的多个构造函数。 使用构造函数,程序员能够设置默认值、限制实例化,并编写灵活易读的代码。
构造函数与该类或结构具有相同名称,并且通常初始化新对象的数据成员。 其方法签名仅包含方法名称和其参数列表;它不包含返回类型。
public class Person { private string last; private string first; public Person(string lastName, string firstName) { last = lastName; first = firstName; } // Remaining implementation of Person class. }
or
public class Location { private string locationName; public Location(string name) => locationName = name; public string Name { get => locationName; set => locationName = value; } }
使用构造函数
通过使用简单构造函数定义了一个名为 Taxi
的类。 然后使用 new 运算符对该类进行实例化。 在为新对象分配内存之后,new
运算符立即调用 Taxi
构造函数。
public class Taxi { public bool isInitialized; public Taxi() { isInitialized = true; } } class TestTaxi { static void Main() { Taxi t = new Taxi(); Console.WriteLine(t.isInitialized); } }
s
1.通过将构造函数设置为私有构造函数,可以阻止类被实例化——class NLog { private NLog() { } }
构造函数可以将标记为公共,私有,保护,内部,受保护内部或私有受保护。 这些访问修饰符定义类的用户构造该类的方式。
2.结构类型的构造函数与类的构造函数类似,但是 structs
不能包含显式默认构造函数,因为编译器将自动提供一个显式默认构造函数。
3.类和 structs
都可以定义带参数的构造函数。 必须通过 new
语句或 base 语句调用带参数的构造函数。 类和 structs
还可以定义多个构造函数,并且二者均不需要定义默认构造函数。
4.构造函数可以使用 this 关键字调用同一对象中的另一构造函数。 和 base
一样,this
可带参数使用也可不带参数使用,构造函数中的任何参数都可用作 this
的参数,或者用作表达式的一部分。
在执行构造函数块之前调用基类的构造函数。 base
关键字可带参数使用,也可不带参数使用。 构造函数的任何参数都可用作 base
的参数,或用作表达式的一部分。
e
默认构造函数
不带任何参数的构造函数称为“默认构造函数”。 每当使用 new
运算符实例化对象且不为 new
提供任何参数时,会调用默认构造函数。
如果没有为类提供构造函数,默认情况下,C# 将创建一个会实例化对象并将成员变量设置为默认值的构造函数。 如果没有为结构提供构造函数,C# 将依赖于隐式默认构造函数,自动将值类型的每个字段初始化为其默认值。
静态构造函数
类或结构也可以具有静态构造函数,该静态构造函数初始化类型的静态成员。 静态构造函数是无参数构造函数。 如果未提供静态构造函数来初始化静态字段,C# 编译器将提供默认静态构造函数