类与声明
什么是类?
前情总结
前面22讲的课基本上就做了两件事
- 学习C#的基本元素
- 学习类的成员
析构函数:
当对象不再被引用的时候,就会被垃圾回收器gc,回收。而收回的过程当中,如果需要做什么事情,就放在析构函数中来做。
gc是托管类语言的特色,比如C#、Java。
有的时候,gc没有释放一些底层的资源,就需要在析构函数中,去手动的释放资源
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace HelloClass {internal class Program {static void Main(string[] args) {//通过反射找回类型Type t = typeof(Student);object obj = Activator.CreateInstance(t, 1, "Timothy");//可以不通过new操作符去创建对象Student stu = obj as Student;Console.WriteLine(stu.Name);//dynamic也可以创建对象dynamic stu2 = Activator.CreateInstance(t, 2, "Max");//动态的去找Console.WriteLine(stu2.Name);}}class Student {public static int Amount { get; set; }static Student() {Amount = 100;}public Student(int id, string name){ID = id;Name = name;Amount++;}//析构函数~Student() {Amount--;Console.WriteLine("Bye bye! Release the system resources...");}public int ID { get; set; }public string Name { get; set; }public void Report() {Console.WriteLine($"I'm {ID} student, my name is {Name}");}}
}
类的声明
C++中类的声明与定义是可以分开的。
而C#和Java中声明和定义是分不开的,所以声明即定义
类声明的位置:名称空间中、类体中、全局名称空间内其他名称空间外
类的访问级别的修饰符:public
和internal
public
即其他项目(Assembly)中的类也可以访问
internal
实际上就是默认的情况,在本项目(Assembly)中来自由访问这个被修饰的类
class Student{}
internal class Student{}
//两者是等同的
常见的装配集(Assembly)就两种,.exe
可执行文件和类库
的类
class Student{}
internal class Student{}
//两者是等同的
常见的装配集(Assembly)就两种,.exe
可执行文件和类库