Class

最常见的一种引用类型

  1. class YourClassName
  2. {
  3. }

字段FLELD

是Class或Struct的成员,它是一个变量

  1. class Octops
  2. {
  3. string name;
  4. public int Age = 10;
  5. }

READONLY

readonly修饰符防止字段在构造之后被改变
readonly字段只能在声明的时候赋值,或在构造函数里被赋值(只有这两种情况)

字段初始化

字段可以可选初始化
未初始化的字段有一个默认值
字段的初始化在构造函数之前运行

同时声明多个字段

  1. static readonly int legs = 8, eyes = 2;

方法

通常有一些语句,会执行某个动作(最好只做一个动作)
参数
返回类型

  1. void
  2. ref/out
  3. [public] [static] void Name([int x]){..}

方法的签名

类型内方法的签名必须唯一
签名:方法名、参数类型(含顺序,但与参数名称和返回类型无关)

  1. class Test
  2. {
  3. static void M1(){}
  4. static void M1(int x){}
  5. }

方法在同一个类里面,名称相同,那么参数必须不同,形成重载。要么直接名称不同。

EXPRESSION-BODIED 方法

C#6

  1. class Test
  2. {
  3. int Foo(int x) { return x * 2; }
  4. //可以简写成
  5. int Foo(int x) => x * 2; //=>代替了{}和return关键字
  6. // 没有返回类型
  7. void Foo(int x) => System.Console.WriteLine(x);
  8. }

只适用于单表达式的方法

方法的重载 OVERLOAD

类型里的方法可以进行重载(允许多个同名的方法同时存在),只要这些方法的签名不同就行

按值传递 VS 按引用传递

参数是按值传递的还是被按引用传递的,也会方法签名的一部分

  1. void Foo(int x) { }
  2. void Foo(ref int x) { } //和上面的方法形成重载
  3. void Foo(out int x) { } //Error

本地方法(C#)

  1. void WriteCubes()
  2. {
  3. System.Console.WriteLine(Cube(3));
  4. System.Console.WriteLine(Cube(2));
  5. System.Console.WriteLine(Cube(1));
  6. int Cube(int value) => value value value;
  7. }

不可以使用static修饰