C# Structs

Structs (C# Programming Guide)

struct 语法跟 class 接近。

struct Point
{
    // fields 不能在声明时初始化,只可以在构造器或在 struct 创建之后初始化
    public int x, y;

    public Point(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
}

var a = new Point(10, 10);

struct 是值类型,不能继承,不过可以实现接口。

constructor

struct 可以有多个 constructors。不能定义 default constructor(没有参数的 constructor),因为 compiler 会自动生成一个,这个 default constructor 在以 new 实例化 struct 时调用。它不是一定要使用,因为 struct 可以直接赋值使用。

int i = new int();
Console.WriteLine(i);

int j;
Console.WriteLine(j); // Error,没有初始化

int k = 1;
Console.WriteLine(k);

提示:所有内置的 numeric types 都是 structs。

有参数的 constructor 只能通过 new 调用。