C#结构

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
 * C#结构
 * 结构与类相似,都表示可以包含方法成员和数据成员的数据结构;
 * 与类级别一致,写在命名空间下面,可以定义字段,属性(不包括自动属性),方法,构造方法等;
 * 结构的定义:
 * struct  结构名
 * {
 *     内容
 * }
 * 结构的特征:
 * 1.结构的实例化可以不使用new(当结构中没有字段,参数时,或者有参数时对结构的所有参数进行初始化后,才能不使用new进行实例化);
 * 2.在结构中,除非字段声明为const或static,否则无法初始化;
 * 3.结构体不能声明默认构造方法或析构方法,可以声明带参数的构造方法(但必须把所有字段赋值);
 * 4.结构不能抽象,本身默认是密封的,不能被abstract和sealed修饰;
 * 5.结构可以实现接口,但不能继承,不能作为基类;
 * 6.结构采用复制方式赋值,对原始副本数据不会产生影响(字典存储时注意);
 * 7.结构可以使用静态构造方法,与类基本一致;
 * 8.结构静态构造方法在结构的实例成员被引用时调用,但创建结构类型的默认值不会出发;
 * 9.编译器为结构提供了一个将每个字段初始化默认的构造方法(值要先初始在调用)
 * 10.只有对结构进行new是才会调用默认构造方法,但默认构造方法不是必须的
 * 运用:
 * 结构是值类型,存储在栈中(存储访问速度快,空间小),可以定义一些小的结构提升速度;
 * 结构与类的区别:
 * 1.结构是值类型,类是引用类型;
 * 2.结构使用栈存储,类使用堆存储;
 * 3.结构成员不能被声明为projected,而类成员可以;
 * 4.结构不能声明默认的构造函数,但是类则无此限制;
 * 5.结构不允许声明析构函数,类无此限制;
 * 6.结构的实例(instance)声明,不允许对包含的变量进行初始化设定,类则可以在声明类的实例时,同事进行变量初始化;
 * 7.结构是隐式继承自ValueType类,而且不能继承任何其它类型,类则可以在声明类的实例时,同时进行变量初始化;
 * 8.结构是无法被继承的,类则可以;
 * 9.结构永远不会终止,因此CLR不会在任何结构上调用Finalize方法,类则是有内存回收进程加以终止,当内存回收进程检测到没有任何作用的类时,它就会调用类的Finalize方法;
 * 
*/
namespace ConsoleApplication7
{
    #region
    //class Program
    //{
    //    static void Main(string[] args)
    //    {
    //        StudentClass studentClass = new StudentClass();
    //        StudentStruct studentStruct = new StudentStruct(123, "456", 10.6f);
    //        Console.WriteLine(studentStruct.numInt);//结构的结果是123
    //        Console.WriteLine(studentStruct.nameStr);//结构的结果是"qwe"
    //        Console.WriteLine(studentStruct.numFloat);//结构的结果是10.9
    //        Console.ReadKey();
    //    }
    //    //结构
    //    struct StudentStruct
    //    {
    //        public int numInt;//注意这里不能赋初始值
    //        //public const int num1 = 10;
    //        //public static int num2 = 15;
    //        public string nameStr;
    //        public float numFloat;
    //        public StudentStruct(int num, string name,float num1)//写在一起
    //        {
    //            //在这里赋值
    //            numInt = num;
    //            nameStr = "qwe";
    //            numFloat = 10.9f;
    //        }
    //    }
    //}
    //class StudentClass
    //{
    //    public int num = 10;//这里可以赋初始值
    //}
    #endregion
    class Program
    {
        //public StudentMessageClass studentClass1 = new StudentMessageClass();
        //public StudentMessageClass[] studentClass2 = new StudentMessageClass[24];
        //public StudentMessageStruct[] studentStruct = new StudentMessageStruct[24];
        //public int[] nums = new int[5];
        //private void WriteStudentMessage()
        //{
        //    //类
        //    studentClass2[0].name = "";
        //    studentClass2[0].age = 18;
        //    //结构体
        //    studentStruct[0].name = "";
        //    studentStruct[0].age = 1;
        //}
        static void Main(string[] args)
        {
            StudentMessageStruct[] studentStruct = new StudentMessageStruct[24];
            studentStruct[0].name = "小李";
            studentStruct[0].age = 18;
            studentStruct[1].name = "小王";
            studentStruct[1].age = 15;
            Console.WriteLine(studentStruct[1].name);
            Console.WriteLine(studentStruct[1].age);
            Console.ReadKey();
        }
        struct StudentMessageStruct//结构
        {
            public string name;
            public int age;
        }
        class StudentMessageClass
        {
            public string name;
            public int age;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值