C#核心(持续更新中) 一、类和对象1、什么是类基本概念具有相同特征具有相同行为一类事物的抽象类是对象的模板可以通过类创建出对象类的关键词 class2、类申明在哪里类一般申明在namespace语句块中3、类申明语法访问修饰符 class 类名 { //特征——成员变量 //行为——成员方法 //保护特征——成员属性 //构造函数和析构函数 //索引器 //运算符重载 //静态成员 }4、类申明实例命名帕斯卡命名法注意同一个语句块中的不同类不能同名//这个类用来形容人类 class Person { //特征——成员变量 //行为——成员方法 //保护特征——成员属性 //构造函数和析构函数 //索引器 //运算符重载 //静态成员 }5、什么是类对象基本概念类的申明 和 类对象变量申明是两个概念类的申明 类似 枚举 和 结构体的申明 类的申明相当于申明了一个自定义变量类型而对象 是类创建出来的相当于申明一个指定类的变量类创建对象的过程 一般称为实例化对象类对象 都是引用类型的6、实例化对象基本语法类名 变量名类名 变量名 nullnull代表空类名 变量名 new 类名 7、实例化对象Person p; Person p2 null;//不分配堆内存空间 Person p3 new Person();//相当于一个人对象 Person p4 new Person();//相当于又是一个人对象注意p3和p4虽然是来自一个类的实例化对象但是他们的特征、行为等等信息都是他们独有的不要觉得他们是共享了数据的两个人彼此没有任何关系8、例题GameObject A new GameObject(); GameObject B A; B null;A在栈空间存储地址在堆内存分配空间栈地址指向堆内存中空间B在栈中开辟新空间也存储A栈空间中的地址栈地址指向对内存中空间B在栈中空间不变内容变成空不影响AGameObject A new GameObject(); GameObject B A; B new GameObject();A在栈空间存储地址在堆内存分配空间栈地址指向堆内存中空间B在栈中开辟新空间也存储A栈空间中的地址栈地址指向A的堆内存中空间B在栈中空间不变内容变成新的地址指向堆内存中新的空间不影响AStudent s new Student(); s.age 10; Student s2 s; s2.age 20;s在栈空间存储地址在堆内存分配空间s栈地址指向s堆内存中空间s.age存在s的堆空间s2在栈中开辟新空间也存储s栈空间中的地址s2栈地址指向s堆内存中空间s2.age就是s.ages2.age改变后s1.age也改变二、成员变量和访问修饰符1、成员变量基本规则申明在类语句块中用来描述对象的特征可以是任意变量类型数量不做限制是否赋值根据需求来定实例//枚举类——性别 enum E_SexType { Man, Woman, } //结构体——位置 struct Position { } //类 class Person { //特征——成员变量 //姓名 public string name ZCloud; //年龄 public int age; //性别 public E_SexType sex; //朋友 public Person friend; //位置 public Position pos; }注意如果要在类中申明一个和自己相同类型的成员变量是不能对它进行实例化如上面例子中的friend2、访问修饰符public —— 公共的 自己内部和别人外部都能访问和使用private —— 私有的 自己内部才能访问和使用 不写 默认为privateprotected —— 保护的 自己内部和子类才能访问和使用3、成员变量初始值数值类型 默认都是0bool类型 默认false引用类型 默认null看默认值方法括号里加要看的类型Console.WriteLine(default(int));三、成员方法1、成员方法的申明基本概念成员方法函数用来表现对象行为申明在类语句块中是用来描述对象行为的规则和函数申明规则相同受到访问修饰符规则影响返回值参数不做限制方法数量不做限制注意成员方法不要加static关键字成员方法 必须实例化出对象 再通过对象来使用 相当于该对象执行了某个行为//类 class Person { //特征——成员变量 //姓名 public string name ZCloud; //年龄 public int age; //性别 public E_SexType sex; //行为——成员方法 //判断是否成年 public bool IsAdult() { return age 18; } //说话 public void Speak(string str) { Console.WriteLine({0}说{1},name,str); } }四、构造函数和析构函数一构造函数基本概念在实例化对象时 会调用的用于初始化的函数如果不写 默认存在一个无参构造函数构造函数写法没有返回值函数名和类名必须相同没有特殊需求时 一般都是public的class Person { public string name; public int age; public Person() { name zCloud; age 18; } }//类中是允许自己申明无参构造函数的//结构体不允许构造函数可以被重载