Class
最常见的一种引用类型
class YourClassName
{
}
字段FLELD
是Class或Struct的成员,它是一个变量
class Octops
{
string name;
public int Age = 10;
}
READONLY
readonly修饰符防止字段在构造之后被改变
readonly字段只能在声明的时候赋值,或在构造函数里被赋值(只有这两种情况)
字段初始化
字段可以可选初始化
未初始化的字段有一个默认值
字段的初始化在构造函数之前运行
同时声明多个字段
static readonly int legs = 8, eyes = 2;
方法
通常有一些语句,会执行某个动作(最好只做一个动作)
参数
返回类型
void
ref/out
[public] [static] void Name([int x]){..}
方法的签名
类型内方法的签名必须唯一
签名:方法名、参数类型(含顺序,但与参数名称和返回类型无关)
class Test
{
static void M1(){}
static void M1(int x){}
}
方法在同一个类里面,名称相同,那么参数必须不同,形成重载。要么直接名称不同。
EXPRESSION-BODIED 方法
C#6
class Test
{
int Foo(int x) { return x * 2; }
//可以简写成
int Foo(int x) => x * 2; //=>代替了{}和return关键字
// 没有返回类型
void Foo(int x) => System.Console.WriteLine(x);
}
只适用于单表达式的方法
方法的重载 OVERLOAD
类型里的方法可以进行重载(允许多个同名的方法同时存在),只要这些方法的签名不同就行
按值传递 VS 按引用传递
参数是按值传递的还是被按引用传递的,也会方法签名的一部分
void Foo(int x) { }
void Foo(ref int x) { } //和上面的方法形成重载
void Foo(out int x) { } //Error
本地方法(C#)
void WriteCubes()
{
System.Console.WriteLine(Cube(3));
System.Console.WriteLine(Cube(2));
System.Console.WriteLine(Cube(1));
int Cube(int value) => value value value;
}
不可以使用static修饰