首页 > 其他分享 >结构 Structs

结构 Structs

时间:2022-12-26 21:01:15浏览次数:34  
标签:Structs game 内存 使用 数据结构 public 结构

与引用类型Class不一样,结构体是一种值类型的数据结构,通过使用Struct关键字,我们可以在一个单一的变量中直接存储各种各样复杂的数据结构。
语法:

[访问修饰符] struct 结构体的名字
{
    结构体成员
}

例子:

namespace StructTest
{
    //结构体:
    struct Game
    {
        public string name;
        public string developer;
        public DateTime releaseDate;

        public void GetInfo()
        {
            Console.WriteLine($"游戏名称:{name},开发者:{developer},Date:{releaseDate}");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {

            Game game;
            game.name = "bob";
            game.developer = "gongdh";
            game.releaseDate = DateTime.Today;
            game.GetInfo();
            Console.Read();
        }
    }
}

结构体的使用场景:
• 电脑的内存空间是有限的,分为堆内存和栈内存。堆内存空间远大于栈内存,但是栈内存执行效率却高于堆内存。
• 引用类型保存在堆内存中,而值类型则保存在栈内存。
• class对象是引用类型,它的数据结构都比较复杂,而且数据量一般也比较大,只有堆内存才能有足够的空间来保存,但是他的执行效率会比较低。而struct是值类型,可以有一定的数据结构,但是数据量小,可以保存在栈内存中,它具有很高的运行效率。

所以对于一个坐标点、矩形和颜色这样的轻量级的对象,可以通过使用结构体保存在栈内存中,这样运行效率会有明显的提升,所以使用结构的成本会比较低

结构体的特点:

  1. 可带有方法、字段、索引、属性、运算符方法和事件。
  2. 结构不能定义无参的默认构造方法,因为默认构造函数是结构体预定一的,无法更改。
  3. 不过,除了无参默认构造方法,我们可以定义其他的有参数的构造函数。
  4. 结构可实现接口,但它不能继承,也不能被继承。
  5. 因为无法继承,所以我们也不能在结构中使用 abstract、virtual、与 protected等关键词。
  6. 我们可以使用new来创建结构对象,不过,不用new同样也可以创建结构实例。
  7. 如果不使用 New 操作符,只有在所有的字段都被初始化、被赋值以后,对象才能被使用。

在使用Class的时候,即便我们没有对他进行实例化,我们依旧可以访问它所有的成员方法和变量,可能运行过程中会出现系统崩溃的可能性,但至少在编译过程中不会报错。不过,这也就从另一个侧面反映出使用Struct要比使用Class更加安全可靠。

最后一点:作为值类型,Struct是不可以为空的,如果把game赋值为null,编译器会马上报错。

标签:Structs,game,内存,使用,数据结构,public,结构
From: https://www.cnblogs.com/ynysj/p/17006864.html

相关文章

  • js中的数据结构
    原始类型  数值字符串布尔值特殊值:undefined  null  合成类型 对象es6唯一的标识符symboljs中有三种方法确定一个值得类型typeofinstanceofObject.p......
  • [oeasy]python0033_任务管理_jobs_切换任务_进程树结构_fg
    ​ 查看进程回忆上次内容上次先进程查询ps-elf查看所有进程信息ps-lf查看本终端相关进程信息杀死进程kill-9PID给进程发送死亡信号运行多个py......
  • python程序的流程控制结构
    文章目录​​一.程序的顺序结构​​​​二.程序的分支结构​​​​1.单分支结构​​​​2.二分支结构​​​​(1).基本形式​​​​(2).紧凑形式​​​​3.多分支结......
  • Web前端——CSS结构
    文章目录​​一.CSS概述​​​​1.来源​​​​2.发展​​​​3.使用CSS的好处​​​​二.CSS定义​​​​1.CSS层叠样式表(CascadingStyleSheet)​​​​2.定义CSS......
  • 实验5 结构体应用编程
    #include<stdio.h>#include<string.h>#defineN3typedefstructstudent{intid;charname[20];charsubject[20......
  • 实验5 结构体应用编程
    实验三#include<stdio.h>#include<string.h>#defineN100typedefstruct{charnum[10];//学号ints1;//期末成绩ints2......
  • 循环结构--1~100的累加
    不管是在我们学习的哪一门语言中,都少不了控制结构的身影,计算机程序执行的流程也由他们三大结构组成。我今天就来说说“1+2+3+...100”的累加如何用不同的循环语句来表示!  ......
  • Microsoft Azure解决方案:如何通过 Microsoft 云服务来管理自己的打印基础结构
    51CTO博客地址:​ ​​​​https://blog.51cto.com/14669127​​​Azure培训视频地址:​ ​​​https://space.bilibili.com/2000820534​​配置通用打印是一种新式打印解......
  • Redis--数据结构--命令汇总
    Redis--数据结构--命令汇总​​1.String​​​​2.Hash​​​​3.List​​​​4.Set​​​​5.SortedSet​​​​6.其他​​​​6.1获取全部的key​​​​6.2key是......
  • chap9 结构
    一:结构的概念   结构是C语言中一种新的构造数据类型,它能够把有内在联系的不同类型的数据汇聚成一个整体,使它们相互关联;同时,结构又是一个变量的集合,可以按照对基本......