1,结构即结构体,是值类型数据结构。
结构使用 struct 关键字声明。
结构和类相比,一般保存的数据量少,存储在栈上,读取速度比类快。
结构可带有方法、字段、索引、属性、运算符方法和事件。
结构可定义有参构造函数,但不能定义析构函数和无参构造函数。
结构和类不同,不支持继承。但结构可以实现接口。
结构成员不能指定为 abstract、virtual 或 protected。
当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。
如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。
结构使用场景:
/*
* 一般的值类型数据,如int,long,double,char等和类相比一般存储少量的数据。
* 一般的引用类型string和类相比其实也是存储少量的数据。
* 类中存储的数据无限制。数据量越大一般读取速度会慢。数据量越大的数据一般是引用类型,引用类型一般数据存储到堆(托管堆),而数据量越小,一般用是值类型,值类型存储在栈上。栈的数据读取速度比堆上的快一些。
* 如果又想存储大量数据,又想读取的快?使用结构Struct。结构存储在栈上,读取速度比类快。结构是值类型。
*
*结构怎么定义?使用struct关键字来声明
*结构怎么使用?和类基本一样,但类灵活。
*/
// 1。结构的使用
// 结构可以使用new实例化
Point p = new Point();
p.X = 10;
p.Y = 20;
p.Show();
// 也可不用实例化
Point.Show2();
// 结构可以定义有参构造函数,不能定义无参构造函数和析构函数。
Book b = new Book(1, "C#高级编程", 88.88F, new string[] { "张三", "李四" });
Console.WriteLine(b.Name);
2。枚举相关细节:
枚举是值类型。
枚举一般用来命名一组整型常量。
枚举类型是使用 enum 关键字声明。
枚举不支持继承或传递继承。
// 位标识枚举有两个要求:
// 1。必须设置特性[Flags]
// 2。必须设置项的值是2的次冥
// [特性]
[Flags]
public enum Week
{
None = 0, // 不选择时,默认是None
Sunday = 1, // 2的0次冥
Monday = 2, // 2的1次冥
Tuesday = 4,// 2的2次冥
Wednesday = 8,// 2的3次冥
Thursday = 16,// 2的4次冥
Friday = 32,// 2的5次冥
Saturday = 64// 2的6次冥
}
// | 按位与 ,多个项中取多个。
Week xiuxiri = Week.Sunday | Week.Saturday;: