1、C#类的基本语法
[权限修饰] class 类名
{
字段;
属性;
方法;
}
创建类的对象使用关键字new,例如要创建Person这个类的对象,则
Person p = new Person();
注:结构和类的本质区别是结构是面向过程的,而类是面向对象的,结构没有面向对象的几大特性,例如继承、多态等都没有。
我们把包含在类或结构中的对象或值叫做字段,字段使得结构和类可以封装数据,一般字段的访问权限都是private的。
属性用来对字段的赋值和取值进行保护。
注:永远使用属性来暴露数据,字段都设置成private或protected,正常情况下应该对每一个字段设置一个属性,来对每一个字段进行保护。
属性的本质就是两个方法,一个是get(), 一个是set()。其中get()用来帮助外界获取类的数据,而set()则用来协助外界对类中数据进行修改。
//Person类
public class Person
{
//字段
private int _age;
//属性
public int Age
{
get{return _age;} //控制外部获取类中数据
set{ //控制外部设置类中数据
if(value<0||value>100)
{
value=50;
}
_age=value;
}
}
}
2、静态与非静态的区别
静态数据或方法在内存中是占据空间的,一旦声明之后便有了实体,所以在调用静态数据或方法的时候不需要再定义一个类的对象来调用,而只需要利用类名直接来调用即可;对于非静态数据或方法,由于其声明之后并没有在内存中开辟空间,其不存在实体,要对其进行调用,必须要先定义类的对象,由对象再来调用。
注:在非静态类中,既可以有非静态成员,也可以有静态成员,但是静态类中,只能有静态成员。在静态函数中,只能访问静态成员,不能访问非静态成员。
注:不能创建静态类的实例对象。
在实际项目中,如果一个类是经常被使用的,就可以考虑将该类写成一个静态类。
3、构造函数
帮助初始化对象
1)、构造函数没有返回值
2)、构造函数名必须与类名一致
3)、构造函数的访问权限必须是public
public class Person
{
public Person(string n)
{this.Name=n;} //注意构造函数参数时传
//递给对象的属性,而不
//是直接给字段
private string _name;
public string Name
{
get{return _name;}
set{_name=value;}
}
}
4、new关键字
在利用new创建对象的过程中,实际上进行了下述三个过程
1)、在内存中开辟一块空间;
2)、在开辟的空间中分别创建对象;
3)、调用对象的构造函数进行初始化对象;
5、this关键字
this关键字有两个作用
1)、代表当前类的对象
2)、在类当中显示的调用本类的构造函数
语法是(:this(参数))
public Person(string name):this(name,'M')
{}
public Person(string name,char gender)
{}
第一个构造函数调用第二个构造函数