结构体(值类型)
(非常像类的一种值类型,不具有面向对象的特征,通常用来封装小型相关变量组 )
System.Drawing.Point、Size、Color
注意:
结构使用时可以new,也可以不new。如果不new,则使用前必须为结构成员赋值。
在结构中不能为变量直接赋初值,除非const、static
结构可以实现接口,但不能继承。
结构的使用方法与类很相似。什么时候使用类?什么时候使用结构?
1.是否需要使用面向对象的特性:封装、继承、多态。,如果需要在某些情况下被继承或者使用多态等特性则只能用类。
当类型中(类或结构)的成员比较多的时候,则考虑使用类。
结构与类的详细区别见备注。使用结构时注意装箱、拆箱的性能差异。
结构是使用 struct 关键字定义的,例如:
C#
public struct PostalAddress { // Fields, properties, methods and events go here... }
结构与类共享大多数相同的语法,但结构比类受到的限制更多:
在结构声明中,除非字段被声明为 const 或 static,否则无法初始化。
结构不能声明默认构造函数(没有参数的构造函数)或析构函数。
结构可以声明带参数的构造函数。
结构不能从类或其他结构继承。
结构在赋值时进行复制。将结构赋值给新变量时,将复制所有数据,并且对新副本所做的任何修改不会更改原始副本的数据。
结构是值类型,而类是引用类型。
与类不同,结构的实例化可以不使用 new 运算符。
一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object。
结构可以实现接口。
===============================================================
类和结构是 .NET Framework 中的通用类型系统的两种基本构造。两者在本质上都属于数据结构,封装着一组整体作为一个逻辑单位的数据和行为。数据和行为是该类或结构的“成员”,它们包含各自的方法、属性和事件等(本主题后面列出了这些内容)。
类或结构的声明类似于蓝图,用于在运行时创建实例或对象。如果定义一个名为 Person 的类或结构,则 Person 为类型名称。如果声明并初始化 Person 类型的变量 p,则 p 称为 Person 的对象或实例。可以创建同一 Person 类型的多个实例,每个实例在其属性和字段中具有不同的值。
类是一种引用类型。创建类的对象时,对象赋值到的变量只保存对该内存的引用。将对象引用赋给新变量时,新变量引用的是原始对象。通过一个变量做出的更改将反映在另一个变量中,因为两者引用同一数据。
结构是一种值类型。创建结构时,结构赋值到的变量保存该结构的实际数据。将结构赋给新变量时,将复制该结构。因此,新变量和原始变量包含同一数据的两个不同的副本。对一个副本的更改不影响另一个副本。
类通常用于对较为复杂的行为建模,或对要在创建类对象后进行修改的数据建模。结构最适合一些小型数据结构,这些数据结构包含的数据以创建结构后不修改的数据为主。
值类型:
基本数据类型 + 枚举、结构
System.Drawing.Point,,Size,,Color
引用类型:
类、接口、委托、string