C# 结构体(Struct)

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.枚举都是隐式密封的,不允许作为基类派生子类

你可能感兴趣的:(c#,开发语言)