c#发展

注册

 

发新话题 回复该主题

C基础四类 [复制链接]

1#
北京哪个医院治白癜风病好 https://m-mip.39.net/nk/mipso_4439523.html

“阅读本文大约10-15分钟。”

关于类的知识点有以下几个,类的定义、对象、构造函数、析构函数及静态成员变量,下面我们来分别介绍一下。

1类和对象

类(class)是最基础的C#类型。类是一个数据结构,将状态(字段)和操作(方法和其他函数成员)组合在一个单元中。类为动态创建的类实例(instance)提供了定义,实例也称为对象(object)。

使用class关键字声明类,如下例中所示:

[访问修饰符][static修饰符]classperson{//Methods,properties,fields,events,delegates//andnestedclassesgohe.publicstringname;publicintage;publicPoint(stringx,inty){this.name=x;this.age=y;}}

类的实例使用new运算符创建,该运算符为新的实例分配内存,调用构造函数初始化该实例,并返回对该实例的引用。下面的语句创建两个person对象,并将对这两个对象的引用存储在两个变量中:

personp1=newperson("张帆",35);personp2=newperson("王芬",24);

创建对象时,在该托管堆上为该特定对象分足够的内存,并且该变量仅保存对所述对象位置的引用。当分配托管堆上的类型和由CLR的自动内存管理功能对其进行回收(称为垃圾回收)时,需要开销。但是,垃圾回收已是高度优化,并且在大多数情况下,不会产生性能问题。

当不再使用对象时,该对象占用的内存将自动收回。在C#中,没有必要不用显式释放分配给对象的内存。

一个类可包含下列成员的声明:构造函数常量字段终结器方法属性索引器运算符事件委托类接口??结构类型枚举类型

类的成员或者是静态成员(staticmember),或者是实例成员(instancemember)。静态成员属于类,实例成员属于对象(类的实例)。声明时有static关键字的就是静态成员。

类的默认访问修饰符是internal,成员的默认访问修饰符是private。2构造函数和析构函数

该示例还说明如何实例化对象及如何打印实例数据。本例声明了两个类。第一个类Child包含两个私有字段(name和age)、一个析构函数、两个公共构造函数和一个公共方法。第二个类Program用于包含Main。

classChild{privateintage;privatestringname;//析构函数~Child(){Console.WriteLine("对象已删除");Console.ReadLine();}//默认构造函数publicChild(){Console.WriteLine("默认构造函数-对象已创建");name="N/A";}//有参构造函数publicChild(stringname,intage){Console.WriteLine("有参构造函数-对象已创建");this.name=name;this.age=age;}//打印方法publicvoidPrintChild(){Console.WriteLine("{0},{1}yearsold.",name,age);}}classProgram{staticvoidMain(){//使用默认构造函数创建对象:Childchild1=newChild("Craig",11);Childchild2=newChild("Sally",10);//使用默认构造函数创建对象Childchild3=newChild();//显示结果:Console.Write("Child#1:");child1.PrintChild();Console.Write("Child#2:");child2.PrintChild();Console.Write("Child#3:");child3.PrintChild();}}

执行结果:构造函数:

类的构造函数是类的一个特殊的成员函数,当创建类的新对象时执行。

构造函数的名称与类的名称完全相同,它没有任何返回类型。

析构函数:

类的析构函数是类的一个特殊的成员函数,当类的对象超出范围时执行。

析构函数的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数。

析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。析构函数不能继承或重载。

3静态成员

我们可以使用static关键字把类成员定义为静态的。当我们声明一个类成员为静态时,意味着无论有多少个类的对象被创建,只会有一个该静态成员的副本。

静态类

1、不能在静态类中声明实例成员,仅包含静态成员。2、静态类的本质,是一个抽象的密封类,所以不能被继承,也不能被实例化。3、不能包含实例构造函数。4、如果一个类下面的所有成员,都需要被共享,那么可以把这个类定义为静态类。

静态变量

1、静态变量必须使用类名来引用,即:类名.静态变量名,而不能使用类的实例,因为,静态变量不属于任何实例,而是共有的。

2、无论对一个类创建多少个实例,它的静态成员都只有一个副本;

3、非静态类可以包含静态的方法、字段、属性或事件;4、静态方法和属性不能访问其包含类型中的非静态字段和事件,并且不能访问任何对象的实例变量;5、虽然字段不能声明为staticconst,但const字段的行为在本质上是静态的。这样的字段属于类,不属于类的实例。

静态方法

1、静态方法只能访问类的静态成员,不能访问类的非静态成员。2、非静态方法可以访问类的静态成员,也可以访问类的非静态成员。3、静态方法不能使用实例来调用,只能使用类名来调用4、静态方法不可以直接访问实例变量,可以在实例函数调用的情况下,实例变量做为参数传给静态方法。5、静态方法也不能直接调用实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用静态方法。静态构造函数

1:静态类可以有静态构造函数,静态构造函数不可继承;

2:静态构造函数可以用于静态类,也可用于非静态类;

3:静态构造函数无访问修饰符、无参数,只有一个static标志;

4:静态构造函数不可被直接调用,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且只执行一次。

END

穿林打叶雨
分享 转发
TOP
发新话题 回复该主题