new关键字:
1.在内存中开辟空间 2.在开辟的空间中创建对象 3.对对象进行初始化,将各个属性值赋值
创建对象的时候会执行构造函数
构造函数是可以有重载的
类当中会有一个默认的无参数的构造函数,当你写一个新的构造函数之后,不管是有参数的还是无参数的,那个默认的无参数的构造函数都被覆盖掉了。
析构函数是实现销毁一个类的实例的方法成员。析构函数不能有参数,不能有任何修饰符而且不能被调用。析构函数与构造函数目的不同,特在析构函数前加前缀~以示区别。
构造函数与析构函数虽然是一个类中形式上较简单的函数,但它们的使用绝非看上去那么简单,因此灵活而正确地使用构造函数与析构函数能够帮助用户更好地理解CLR的内存机制以及更好的处理系统中的资源。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication9
{
public enum Gender
{
男,
女
}
class Clerk
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private Gender _gender;
public Gender Gender
{
get
{
return _gender;
}
set
{
_gender = value;
}
}
private int _age;
public int Age
{
get
{
return _age;
}
set
{
_age = value;
}
}
private string _department;
public string Department
{
get
{
return _department;
}
set
{
_department = value;
}
}
public void Write()
{
Console.WriteLine("我叫{0},我是{1}生,我{2}岁了,在{3}任职",this.Name,this.Gender,this.Age,this.Department);
}
public Clerk(string name,Gender gender,int age,string department)//构造函数
{
this.Name = name;
this.Gender = gender;
this.Age = age;
this.Department = department;
}
public Clerk(string name,Gender gender,int age)
{
this.Name = name;
this.Gender = gender;
this.Age = age;
}
public void Write2()
{
Console.WriteLine("我叫{0},我是{1}生,我{2}岁了", this.Name, this.Gender, this.Age);
}
//如果系统中没有指定析构函数,那么编译器由GC来决定什么时候释放资源
//Garbage Collection
//在使用完当前类的时候会调用它
~Clerk()
{
Console.WriteLine("我是析构函数,看我什么时候调用");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication9
{ class Program
{
static void Main(string[] args)
{
Clerk zsClerk = new Clerk("张三", Gender.男, 25, "人力部");
zsClerk.Write();
Clerk lsClerk = new Clerk("李四", Gender.女, 30);
lsClerk.Write2();
Console.ReadKey();
}
}
}