C#基本语法笔记

161 阅读2分钟

1.静态函数只能调用其他静态函数

2.结构体是值类型,类是引用类型

数组

1.png

二维数组

3.png

值类型和引用类型

2.png

输入输出

4.png

5.png

强制转换

6.png

只读遍历Foreach

8.png

枚举Enum

9.png

结构Struct

10.png

装箱与拆箱

7.png

名称空间

  • 不同文件若在相同名称空间内则可直接互相调用内部成员
  • 不同文件在不同名称空间可以通过Game.Enemy访问或直接在文件顶端写Using Game
  • System是系统提供的名称空间,所以往往会有Using System
  • 名称空间内的类均为public

12.png

引用(ref和out)

  • ref,等同于c++中的&
  • out,也是引用,可以传一个没有赋值的参数,这个参数在函数内必须被赋值(不可被操作,只可被赋值),常用于充当返回值(当需要返回多个返回值时)

13.png

创建类对象的方法

11.png

类权限

  • 类默认public,类内成员默认private

14.png

类的继承

  • 父类构造函数改变,子类构造函数需重写

15.png

多态

  • 多态,父类指向子类对象

feff.png

虚函数重写

  • 父类虚函数,子类重写,base.run()指执行父类虚函数内代码。

dadad.png

重载

  • 参数类型或数目不同均可重载

adadad.png

属性

  • C#内置了set,get不用再自己写了
  • 类似p.HP=100自动识别为set,int a=p.HP自动识别为get
  • 可以只写get或只写set,即使变量变为只读或只写

adadad.png

静态Static

  • 只可以用类名调用,不可以用实例化对象调用(独一份)
  • 普通成员可以调用静态成员,但静态成员只可调用静态成员

static.png

static22.png

抽象Abstract

  • 抽象实现的功能完全可用虚函数代替,不过抽象格式更易读,便于协作

abs0.png

abs1.png

abs2.png

接口

  • C#可以在接口中实现多继承,多继承:一个子类可有多个父类

api0.png

api1.png

api2.png

泛型

  • 系统会自动推断,调用时直接Add(ref a, ref b)即可,而无需Add<int>(ref a, ref b)

fanxing0.png

fanxing1.png

fanxing2.png

fanxing3.png

fanxing4.png

集合

jihe0.png

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; 元素个数

jihe1.png

1.2 Stack栈

  • Stack也有Count方法

jifen2stack0.png

jifen2stack1.png

1.3 Queue队列

jifen3.1.png

jifen3.2.png

1.4 Hash哈希表

hash1.png

hash2.png

1.泛型集合(安全)

  • 字典取值最好用TryGetValue,这样取值失败也不会崩(若像数组那样取值,取值失败程序会崩)

fanxingjihe.png

委托

一个委托变量可以存储多个方法!!!!直接doSomething=eat; doSomething+=walk;,即委托链

delegation0.png

delegation1.png delegation2.png

delegation3.png