类的基本概念
- 与C中结构的最大不同:类中包含处理数据的函数
- 类修饰符:new, public, protected, inernal, private, abstract, sealed
类成员的存取控制
- 公有函数:类和外部通讯的借口——外部函数通过调用公有函数,按照预先设定好的方法修改类的私有成员。
类的对象
- Person OnePerson=new Person();//Person OnePerson; OnePerson = new Person();
- 建立Person类对象,返回对象地址赋值给Person类变量OnePerson
- 对象地址不同于C中的指针:不能像指针那样可以进行加减运算,也不能转换为其它类型地址
类的构造函数
- 当用new生成类的对象是,自动调用类的构造函数,初始化某些数据成员
- 构造函数和类名相同,没有返回值
class Person {
private string _name="";
private int _id="";
public Person(string Name; int Id)
{
_name = Name;
_id = Id;
}
}
Person OnePerson=new Person("Ada", 001);
类的析构函数
- 变量和类的对象都有生命周期,生命周期结束,这些变量和对象就要被撤销。
- 类的对象被撤销时,将自动调用析构函数,一些善后工作可在析构函数中完成
- ~Person,无返回类型,无参数
- C#中的类析构函数不能显示地被调用,它是被垃圾收集器撤销不被使用的对象是自动调用的。
类的构造函数的重载
- 同一个类的函数,如果函数名相同,但参数类型或个数不同,认为是不同的函数——函数重载。
- 仅返回值不同,不能看作不同的函数
- 定义多个构造函数
- 析构函数无参数-->析构函数不能重载
CLR
- .NET系统CLR内建垃圾收集器,当对象的引用变量被撤销,表示该对象的生命周期结束,垃圾收集器负责收回不被使用的对象占用的存储空间。
值类型
- 简单类型:也是结构类型,有构造函数、数据成员、方法、属性等
- int i=int.MaxValue;
- string s = i.ToString();
- string s = 13.ToString(); //即使是一个常量,C#也会生成结构类型的实例,因此也可以使用结构类型的方法
- 待补充:详表及注意
- 结构类型(Struct types)
- 声明构造函数、数据成员、方法、属性等
- 与类区别:值vs引用;结构不能从另外一个结构或者类派生;结构不能被继承;不能定义抽象结构;结构成员不能被访问权限控制字protected修饰;结构不能用virtual, abstract修饰;在结构中不能定义析构函数。
- 结构能够继承接口
- 例子:
using System; struct point //结构定义 { public int x,y; //结构中也可以声明构造函数和方法,变量不能赋初值 } class Test { static void Main() { point P1; P1.x = 166; P1.y = 111; point P2; P2=P1; point P3 = new point();//调用默认构造函数,使 x=y==0
}
}
- 枚举类型
using System; class Class1 { enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; static void Main(string[] args) { Days day=Days.Tue; int x=(int)Days.Tue; //x=4 Console.WriteLine("day={0}, x={1}", day, x);//显示:day=Tue, x=4 } }
引用类型
- 类:对象类,数组类,字符串类等
- 对象类(Object类)