1.静态函数只能调用其他静态函数
2.结构体是值类型,类是引用类型
数组
二维数组
值类型和引用类型
输入输出
强制转换
只读遍历Foreach
枚举Enum
结构Struct
装箱与拆箱
名称空间
- 不同文件若在相同名称空间内则可直接互相调用内部成员
- 不同文件在不同名称空间可以通过Game.Enemy访问或直接在文件顶端写Using Game
- System是系统提供的名称空间,所以往往会有Using System
- 名称空间内的类均为public
引用(ref和out)
- ref,等同于c++中的&
- out,也是引用,可以传一个没有赋值的参数,这个参数在函数内必须被赋值(不可被操作,只可被赋值),常用于充当返回值(当需要返回多个返回值时)
创建类对象的方法
类权限
- 类默认public,类内成员默认private
类的继承
- 父类构造函数改变,子类构造函数需重写
多态
- 多态,父类指向子类对象
虚函数重写
- 父类虚函数,子类重写,
base.run()指执行父类虚函数内代码。
重载
- 参数类型或数目不同均可重载
属性
- C#内置了set,get不用再自己写了
- 类似
p.HP=100自动识别为set,int a=p.HP自动识别为get - 可以只写get或只写set,即使变量变为只读或只写
静态Static
- 只可以用类名调用,不可以用实例化对象调用(独一份)
- 普通成员可以调用静态成员,但静态成员只可调用静态成员
抽象Abstract
- 抽象实现的功能完全可用虚函数代替,不过抽象格式更易读,便于协作
接口
- C#可以在接口中实现多继承,多继承:一个子类可有多个父类
泛型
- 系统会自动推断,调用时直接
Add(ref a, ref b)即可,而无需Add<int>(ref a, ref b)
集合
1.非泛型集合(危险)
非泛型集合支持所有元素进入集合,常导致集合内元素类型混乱,获取其中元素请用object类型元素(所以很危险,自己也未必知道object里是什么类型,再强转很容易出错)
1.1 ArrayList
ArrayList array = new ArrayList();
array.Add(5);
array.Insert(0, 5); (insert 5 in array[0])
array.Remove(5); 根据值移除元素
array.RemoveAt(0); 根据位置移除元素
array.Contains(5); 判断是否包含该元素,返回布尔值
array.Clear(); 清空数组
array.Count; 元素个数
1.2 Stack栈
- Stack也有Count方法
1.3 Queue队列
1.4 Hash哈希表
1.泛型集合(安全)
- 字典取值最好用TryGetValue,这样取值失败也不会崩(若像数组那样取值,取值失败程序会崩)
委托
一个委托变量可以存储多个方法!!!!直接doSomething=eat; doSomething+=walk;,即委托链