C#学习——构造函数和析构函数
2016-02-19 15:10
513 查看
构造函数和析构函数
构造函数:
定义:
构造函数是一种特殊的方法。也叫构造方法,主要用来在创建对象时初始化,并且可以在构造函数中对对象进行初始化,总与new运算符一起使用。构造函数是用来创建对象的特殊方法,方法名和类名一样,没有返回值,连void都不用。但构造函数可以有参数,new对象的时候传递函数参数即可。如果不指定构造函数,则类中会自动生成一个默认的无参构造函数,如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参的构造函数就需要自己来写。
构造函数的重载:
构造函数可以重载,也就是多个参数不同的构造函数,类似于方法的重载。其中方法的重载已经在前边的博客方法函数中讲过了。例子:先写一个学生类,给这个学生类添加构造方法,使在实例化学生类的时候可以通过构造方法对姓名、性别、年龄、语文、数学、英语等属性赋值,也可以只对姓名和性别赋值。年龄默认为18岁,其余成绩默认为0分。代码如下:
Student类中的代码:
public class Student { public Student (string name,int age,char gender,int chinese,int english,int math) { this._name = name; this._Age = age; this._Gender = gender; this._chinese = chinese; this._math = math; this._english = english; } public Student (string name,int age) { this._name =name; this._Age=age; } //以上两个构造函数的重载。两个方法中的参数个数不同 string _name; public string Name { get { return _name; } //设置姓名属性为只读 } int _Age=18; public int Age { get { return _Age; } //设置年龄为只读 } char _Gender; public char Gender { get { return _Gender; } //性别为只读 } int _chinese; public int chinese //设置语文成绩属性 { get { return _chinese; } } int _math; public int math //设置数学成绩属性 { get { return _math; } } int _english; public int english //设置英语成绩属性 { get { return _english; } } public void say() //定义一个方法显示 { Console.WriteLine("我叫{0},今年{1}岁,是{2}生,语文{3},数学{4},英语{5}",this.Name ,this.Age ,this.Gender ,this.chinese ,this.math,this.english ); //Console.ReadKey(); } }客户端的代码如下:
class Program { static void Main(string[] args) { Student stu = new Student("zhangsan", 16, '男', 28, 45, 67); //student类的实例化,显示全部 stu.say(); //调用方法显示 Console.WriteLine("================="); Student xlstu = new Student("xiaohong",13); //student类的另一个实例化,显示部分,用的构造函数的重载。 xlstu.say(); //调用方法显示 Console.ReadKey(); } }
析构函数:
析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。析构函数名也应与类名相同,只是在函数名前面加一个位取反符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数(即使自定义了析构函数,编译器也总是会为我们合成一个析构函数,并且如果自定义了析构函数,编译器在执行时会先调用自定义的析构函数再调用合成的析构函数),它也不进行任何操作。所以许多简单的类中没有用显示的析构函数。
析构函数是不太常用的,在这里不再举例子讲述。
相关文章推荐
- Windows 7下可以使用的各个命令语句+C#打开
- .NET Memeroy Profile 优化C#程序实战笔记
- 使用C#配合ArcGIS Engine进行地理信息系统开发
- C#几种异步编程
- XML序列化 C#
- C# 3D到2D投射
- C# 洗牌算法
- C#资源释放方法实例分析
- C# 中DateTime的各种使用
- C#获取泛型集合中元素的类型
- 远程桌面,RDP文件密码加密、解密算法(C#)
- csharp:正则表达式采集网页数据
- c# out ref
- C#泛型集合之Dictionary使用技巧
- c#中的数据类型简介(string)
- 解析C#设计模式编程中外观模式Facade Pattern的应用
- byte数组与Image的相互转换
- C#委托&事件
- c# word 操作
- C#如何释放已经加载的图片