html 网站 模板,wordpress H1 title,网站服务器在哪里,织梦做英文网站结构 值类型中除了枚举类型都是结构类型的派生类型 由于结构是值类型#xff0c;并且直接存储数据#xff0c;因此#xff0c;在一个对象的主要成员为数据且数据量不大的情况下#xff0c;使用结构会带来更好的性能。 public struct Address
{public string Name;public st… 结构 值类型中除了枚举类型都是结构类型的派生类型 由于结构是值类型并且直接存储数据因此在一个对象的主要成员为数据且数据量不大的情况下使用结构会带来更好的性能。 public struct Address
{public string Name;public string Phone;
}Address address;
address.Name “中国”;
address.Phone “12345678”; 结构是值类型直接包含它自己的数据每个结构都保存自己的一份数据修改每一个结构的数据都不会对其他结构的数据造成影响结构不是引用类型因此结构类型的变量不能被赋予null值。 把一个结构赋值给另一个结构时会把数据从一个结构复制到另一个结构因此当结构比较大的时候这种数据复制机制会带来较大的性能开销。 无论结构使用预定义的、无参数的构造函数还是使用用户定义的、有参数的构造函数进行初始化都会初始化结构的数据成员。其中前者将数值型初始化为默认值引用类型初始化为null后者将使用用户自定义的初始化策略对种成员进行初始化。因此结构类型不允许在声明时显式初始化数据成员。 构造函数 结构类型可以有实例构造函数和静态构造函数但不能有析构函数析构函数主要针对非托管代码中引用的释放。 实例构造函数 结构类型都有一个预定义的、没有参数的构造函数此构造函数不允许删除和重定义并且这个无参数的构造函数将会一直存在并不会因为定义了其他带参数的构造函数就消失与类不同。 要调用结构实例构造函数必须使用new运算符。如果不使用new运算符那么结构的数据成员就是未分配状态在分配之前是不能访问的。 带参数构造函数必须初始化结构的所有数据成员并保证数据成员确实被初始化做参数检测确保成员被初始化否则未正确初始化将会导致编译错误 静态构造函数 结构的静态构造函数具有如下特点 不能有访问修饰符和参数不能访问实例成员无法直接进行调用结构和类的静态构造函数的触发规则不同类的静态构造函数是在创建第一个实例或引用任何静态成员之前自动调用的而结构的静态构造函数在下述任意一种情况之前才会被自动调用 使用显式声明的构造函数进行初始化调用结构的方法或访问结构的静态数据成员无论读取还是赋值访问实例数据成员不会触发CLR自动调用静态构造函数多态和可继承性 结构直接派生自System.ValueType间接派生自System.Object但结构是隐式密封的不能作为基类再派生出其他的结构也不能从类派生但可以从接口派生。 关于结构的继承性有如下特点 结构类型总是隐式密封因此在定义结构时不能使用sealed和abstract关键字因为结构不能作为基类结构的成员不能使用如下访问修饰符protected和protected internal结构的函数成员不能声明为abstract和virtual但是可以使用override关键字用以覆写它的基类System.ValueType中的方法装箱与拆箱 和类的类型转换最大的不同是装箱和拆箱操作执行的是将结构复制到或复制出装箱的实例对象。即装箱前的数据和拆箱后的数据是两份不同的数据没有直接关联修改其中一个不会影响另一个。 结构和类的适用场合 当堆栈的空间很有限且有大量的逻辑对象时创建类要比创建结构好一些对于点、矩形和颜色这样的轻量对象使用结构的成本较低在表现抽象和多级别的对象层次时类是最好的选择因为结构不支持继承大多数情况下目标类型只是含有一些数据或者以数据为主例如字典中的“key-value”数据对这时使用结构是最佳选择引用 [1]: C# 权威指南 转载于:https://www.cnblogs.com/home-wang/p/10949710.html