C#静态与非静态、构造函数、this关键字、析构函数
2017-05-26 13:19
316 查看
静态与非静态
静态类和非静态类
非静态类可以创建一个对象,利用对象访问其中的方法
静态类只能通过类名访问其中的方法。
this关键字:
1、代表当前类的对象
2、调用当前类的构造函数:在类当中显示调用本类的构造函数 构造函数:this()
构造函数:构造函数用来创建对象,可以在构造函数中对对象进行初始化。
构造函数是一种特殊的函数,它的作用为方便初始化函数,给对象的每个属性进行一一赋值。
创建对象的时候会执行构造函数。
特点:
1、构造函数没有返回值,void也没有;
2、构造函数的名称与类名相同;
3、构造函数的访问修饰符必须为public;
4、构造函数可以被重载;
5、类中有个默认的构造函数:当写一个新的构造函数时,无论有无参数,默认的无参数的构造函数被替换了;
构造函数
一旦创建了构造函数,原来默认的构造函数就没有了;
new关键字:
1、内存中开辟空间
2、在开辟的空间中创建对象
3、调用对象的构造函数进行初始化
析构函数:程序结束的时候,析构函数才会执行,帮助系统释放资源。
GC:Garbage Collection:自动释放资源。当程序结束后,GC自动扫描整个系统内存,如果发现有的空间没有被指向,则立即销毁,释放资源。
静态类和非静态类
非静态类可以创建一个对象,利用对象访问其中的方法
静态类只能通过类名访问其中的方法。
this关键字:
1、代表当前类的对象
2、调用当前类的构造函数:在类当中显示调用本类的构造函数 构造函数:this()
构造函数:构造函数用来创建对象,可以在构造函数中对对象进行初始化。
构造函数是一种特殊的函数,它的作用为方便初始化函数,给对象的每个属性进行一一赋值。
创建对象的时候会执行构造函数。
Construct cons2 = new Construct( ); // 其实执行了Construct.Construct(); 类名.构造函数
特点:
1、构造函数没有返回值,void也没有;
2、构造函数的名称与类名相同;
3、构造函数的访问修饰符必须为public;
4、构造函数可以被重载;
5、类中有个默认的构造函数:当写一个新的构造函数时,无论有无参数,默认的无参数的构造函数被替换了;
构造函数
一旦创建了构造函数,原来默认的构造函数就没有了;
new关键字:
1、内存中开辟空间
2、在开辟的空间中创建对象
3、调用对象的构造函数进行初始化
析构函数:程序结束的时候,析构函数才会执行,帮助系统释放资源。
GC:Garbage Collection:自动释放资源。当程序结束后,GC自动扫描整个系统内存,如果发现有的空间没有被指向,则立即销毁,释放资源。
namespace demo1 { class Construct { //包含字段、属性、方法、构造函数 //字段:存储数据 //属性:保护字段,可以对字段进行赋值和限定 //方法:描述对象的行为 // 构造函数:初始化对象(对对象的每个属性进行一一赋值) string _name; public string Name { get{return _name;} } string _weather; public string Weather { set { _weather = value; } } int _day; public int Day { set{_day=value;} get{return _day;} } char _week; public char Week { set { _week = value; } get { return _week; } } public Construct() { Console.WriteLine("构造函数,但是不是默认的"); } public Construct(string name,string weather,int day,char week) // 给属性赋值,构造函数中可以对赋值参数进行判定 { this._name = name; // 这里name属性只有get,没有set,只能给字段赋值 this.Weather = "好"; this.Day = 1; this.Week = '双'; } public Construct(string name,string weather):this(name,weather,0,'单') // 重载构造函数,这里利用了this,利用全部初始化的构造函数初始化这里需要的初始化。避免写冗余的代码。 这个构造函数只初始化name,weather,不需要初始化day,week,后面两个值随便赋值。 { } public void ShowDetail(){ Console.WriteLine("the name is {0},The weather is {1}", this.Name, this._weather); // 这里的this._weather:因为属性中没有get,所有只能使用字段,不是使用属性。并且这里的this不能取消,避免出现歧义,假设函数中有相同的变量,如:Name,若没有this,直接使用的是局部变量,而不是属性。 } public void ShowWeek() { Console.WriteLine("the day is {0},The week is {1}", this.Day, this.Week ); } ~Construct() { // 析构函数 } } } static void Main(string[] args) { Construct cons1 = new Construct("小米", "天气晴朗", 1, '双'); // new关键字:1、内存中开辟空间 2、在开辟的空间中创建对象 3、调用对象的构造函数进行初始化 cons1.ShowDetail(); cons1.ShowWeek(); Construct cons2 = new Construct("小天", "天气好"); cons2.ShowDetail(); Console.ReadLine(); }
相关文章推荐
- 【c#】面向对象简介(构造、析构函数,静态构造函数、静态类)
- C#学习之静态成员和非静态成员,构造函数,方法,方法参数,操作符重载,事件
- C#基础 属性 构造函数 静态构造函数 析构函数
- C#中构造函数和析构函数的用法
- 构造函数和析构函数的原理及在C#中的运用
- C#箴言:用静态构造函数初始化静态成员
- C#中的类型构造函数(静态构造函数)
- C#中构造函数和析构函数的用法
- C#中构造函数和析构函数的用法
- C#中构造函数和析构函数的用法
- C#中构造函数和析构函数的用法
- C#中的静态构造函数 静态类 C# 泛型和 C++ 模板之间的主要差异
- C#中的静态构造函数
- 构造函数和析构函数的原理及在C#中的运用
- C#里静态构造函数
- 说说C#的静态构造函数
- C#中构造函数和析构函数的用法
- C# 静态构造函数
- 静态构造函数与Singleton模式在C#中的实现
- c#中静态成员与非静态成员的调用