1.结构体是值类型数据结构。
引用类型派生自 System.Object ,而值类型均隐式派生自 System.ValueType
// 数值类型
//is 代表 判断左边内容 和右边的类型 是否一致 如果一致 返回true 反之为false
Console.WriteLine(1 is ValueType); // true
// 布尔类型
Console.WriteLine(true is ValueType); // true
// 结构类型
Console.WriteLine(new Person() is ValueType); // false
// 枚举类型
Console.WriteLine(EnumTest.Item1 is ValueType); // true
2.struct 关键字用于创建结构体
struct MyStruct2
{
}
3.结构可带有方法、字段、属性、运算符,委托和事件。
struct MyStruct2 {
private int A;
public int Age { get; set; }
public void Test() { };
delegate void Delegate1();
event Delegate1 Delegate2;
public static MyStruct2 operator -(MyStruct2 stu1, MyStruct2 stu2)
{
return new MyStruct2();
}
}
4.结构可定义构造函数,但不能定义析构函数。
不能定义无参构造函数。无参构造函数(默认)自带
如果定义有参构造函数 必须在 构造函数内部 初始化所有 字段和属性
struct MyStruct2 {
private int A;
public int Age { get; set; }
public void Test() { };
public delegate void Delegate1();
public event Delegate1 Delegate2;
public MyStruct2(int a,int age,Delegate1 delegate1) {
A = a;
Age = age;
Delegate2 = delegate1;
}
//~MyStruct()
{
//错误
}
}
5.结构可实现一个或多个接口 但是不能继承其他类
6.结构不支持被其他类继承。
7.结构成员不能指定为virtual 或 protected、
8.结构可以使用 New 创建对象 也可以不使用 ,如果结构中有属性 必须使用new 创建对象
9.结构可以嵌套在类中使用 也可以和类并列定义在命名空间中
类和结构总结:
1. 类和结构实际上都是创建对象的模板, 每个对象都包含数据,并提供了处理和访问数据的方法
2. 类是引用类型 对象存于堆中 可以通过GC管理内存 结构是值类型 对象存于栈中 、
3 结构不能被继承 也不能继承其他类 但是能继承接口
4. 结构和类 都能使用new 创建对象 但是结构也可以不使用
5. 结构作为方法参数 默认是值传递 类类型默认是引用传递
枚举
枚举是描述一组整数值的结构 使数字更具有具体意义
作用:
1.枚举是值类型
2.枚举类型使用 enum 关键字声明的。
3.枚举是一组整型常量 默认是从 0开始 也可以自己定义范围
4.枚举使用enum关键字来声明,与类同级。枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符。枚举本身的修饰符仅能使用public和internal。
5.枚举都是隐式密封的,不允许作为基类派生子类