您的位置:首页 > 编程语言 > C#

C#静态与非静态、构造函数、this关键字、析构函数

2017-05-26 13:19 316 查看
静态与非静态

静态类和非静态类

非静态类可以创建一个对象,利用对象访问其中的方法

静态类只能通过类名访问其中的方法。

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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: