new之后运行时的工作
首先分配内存(值类型)
若调用默认的无参构造方法则全刷成默认值,调用显式声明的构造方法则仅会调用该构造方法而不会再赋初值(若有的值没被初始化则会直接编译错误,因为C#要求结构体所有字段必须初始化,而类则会对每个字段默认刷个0)
注意:无法重写struct的无参构造方法
readonly实例方法
结构体作为值类型,为了保证线程安全,一般应该保证使用时内部属性字段不变(Tuple除外)
在结构体中,readonly可以修饰成员方法,保证该方法并不对该结构体的任意属性或字段产生副作用