1、 结构(值类型):
声明:struct structexp
使用:structexp a = new structexp();
a.字段或方法.
2、 枚举(值类型):
枚举类似拥有一组常量的一个集合,如同一个选项卡.
枚举中的值用”,”分割,枚举里的值为命名常量,每个命名常量对应一个值,第一个元素的值对应的数值是0,后面的值依次类推,自动赋予每个值一个整型;每个值的整型数值可以被赋值,被赋值的那个值后面的值的整型数值也会发生跟随变化.
enum enumexp
{
星期一, //0
星期二, //1
星期三=10, //10
星期四, //11
星期五 //12
}
声明:enum enumexp
使用:enumexp a = enumexp.枚举里的值;
3、类是一种数据结构,可以包含数据成员(常量和字段)、函数成员(方法、属性、事件、索引器等等)以及嵌套类型.
C#中一切类型都为类,除命名空间,所有的语句都必须位于类(或者结构)中。因此,类时C#语言的核心和基本构成模块.
类类似于人,对象类似于小明、小红、小李等,每个对象都是不同的。
类相当于把小明、小红、小李等人的共性提取出来,形成有相同属性的一个抽象模具。
我们使用类的时候,需要先实例化一个类,去创建一个对象,也可以去创建另一个对象,创建的对象时相互独立的.
声明:class classexp
使用:classexp a = new classexp();
a.字段或者方法;
4、属性:对字段的一个方法,对字段的取值和赋值进行限定.
快速生成属性快捷键:CTRL+R+E;
属性的声明和使用:
private int _age; //字段通常使用_开头的前缀加小写字母作为名称,字段最好设置为private私有属性
public int Age //属性名Pascal大小写形式命名
{
get // get访问器,读字段
{
return _age; //get访问器可以限定取值条件
}
set //set访问器,写字段
{
if (value < 0) //限定
value = 0; //编译器自带的一个参数,其类型和字段类型相同.
else //else可以取消
_age = value;
}
}
自动实现的属性:
public int Age{ get; set; };
这种声明方式就不需要声明私有字段了,编译器会自动创建它,但是自动属性就不能进行限定。
get、set访问器也可以直接设置不同的访问修饰符;
例如:
Private int _age;
public int Age
{
get
{
return _age;
}
private set
{
_age = 20;
}
}
这种set是作用相当于给定初始化,并且不能改变.
5、构造函数:
帮助我们初始化对象(给我们每个属性依次的赋值);
编写代码时,如没有提供它们,则编译器会自动添加一个默认的无参数的构造函数,当你写了一个构造函数时,不管有无参数,默认的无参数的构造函数都被覆盖掉了.
构造函数没有返回值,连void也不能写,必须是public;
构造函数的名称和类名一样.
声明:public Class1( string name, int age, Xingbie xingbie) //括号为写入的参数
{
_name = name; //将写入的参数赋值给类的私有字段
Age1 = age;
xb = xingbie;
}
使用:Class1 a = new Class1(“yao”, 26, Xingbie.man); //在实例化对象时写入参数
写入的参数必须和声明时的参数一一对应;
构造函数可以重载.
6、new关键字:
- 在内存中开辟空间;
- 在开辟的空间中创建对象;
- 对对象进行初始化,将各个属性值赋值.
创建对象的时候会执行构造函数.
7、析构函数:
析构函数是实现销毁一个类的实例的方法成员.
析构函数不能有参数、修饰符,不能够被调用,析构函数和构造函数数目不同,一般在析构函数名前加上前缀”~”以示区别.
使用:~Class1()
{
}
析构函数在系统完成各项代码之后会返回到析构函数销毁资源;
如果系统没有指定析构函数,那么编译器有GC来决定什么时候来进行释放资源;