构造器(一种特殊的方法)
- 构造器(constructor)是类型的成员之一
- 狭义的构造器指的是“实例构造器”(instance constructor)
- 如何调用构造器
- 声明构造器
- 构造器的内存原理
构造函数译为构造器,成员函数译为方法,它们本质都还是函数。
默认构造器
namespace ConstructorExample
{
class Program
{
static void Main(string[] args)
{
Student stu = new Student();
Console.WriteLine(stu.ID);
}
}
class Student
{
public int ID;
public string Name;
}
}
默认构造器将int
型的 ID 初始化为 0:
0
请按任意键继续. . .
无参数默认构造器
namespace ConstructorExample
{
class Program
{
static void Main(string[] args)
{
Student stu = new Student();
Console.WriteLine(stu.ID);
Console.WriteLine(stu.Name);
}
}
class Student
{
public Student()
{
ID = 1;
Name = "No name";
}
public int ID;
public string Name;
}
}
输出:
1
No name
请按任意键继续. . .
带参数构造器
一旦有了带参数的构造器,默认构造器就不存在了。若还想调用无参数构造器,必需自己写。
namespace ConstructorExample
{
class Program
{
static void Main(string[] args)
{
Student stu = new Student(2, "Mr.Okay");
Console.WriteLine(stu.ID);
Console.WriteLine(stu.Name);
}
}
class Student
{
public Student(int initId,string initName)
{
ID = init Id;
Name = initName;
}
public int ID;
public string Name;
}
}
输出:
2
Mr.Okay
请按任意键继续. . .
Code Snippet
ctor + TAB * 2:快速生成构造器代码片段
构造器内存原理
默认构造器图示
图中左侧代指栈内存,右侧代指堆内存。
注意栈内存分配是从高地址往低地址分配,直到分配到栈顶。
public int ID;// int 结构体 占4个字节
public string Name;// string 引用类型 占4个字节 存储的是实例的地址
带参数构造器图示
Student stu = new Student(1, "Mr.Okay");