类与声明
什么是类?
前情总结
前面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
可执行文件和类库