?结构和类极其相似,我们需要关注的是其有哪些不同:
- struct关键字,而非class关键字
- 结构体不可以包含无参构造函数,因为结构体自带无参数构造函数。?
- 下面这个不同我们先来看一个例子:
struct A
{
public string StringA { get; set; }
public string stringB;
public string StringB
{
get { return stringB; }
set { this.stringB = value; }
}
public A(string a)
{
this.StringA = a;
this.stringB = a;
}
}
?上面的例子中有一段会报错就是A构造方法处。
因为StringA我们使用了自动参数,stringB并没有使用。所以会提示我们:
- 根据上面的一个小问题,我们知道,结构中需要使用自动参数,或者说,我们必须在构造函数中,先为所有字段赋值。而我们的结构体一开就给予了一个构造方法,我们通常继承它,来编写自己的相关构造方法,便可以解决上面的问题;或者将变量改为自动变量。总的来说就是构造函数内,必须对每一个变量实现赋值操作。不过此问题,似乎在net5.0中已经修正。
- 结构是值类型,类是引用类型。
- 结构中的字段不可以赋值。除非字段是const或是static类型。(const是常量,不可以修改)
?
|