C#中关于Struct(结构体)介绍以及附带案例解释,一看就会,一学就懂系列[通俗易懂]

C#中关于Struct(结构体)介绍以及附带案例解释,一看就会,一学就懂系列[通俗易懂]Struct结构体的含义:结构体的作用?结构体的特点?结构体的声明?结构体的注意事项?…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前言:在我们面向对象的动态编程中,经常会遇到封装性问题,但是用一般的封装方法可能会造成代码数量过多,影响内存和程序运行速度,降低效率,所以我们会运用到结构体这个结构,用来对属性、方法进行封装;

一.Struct结构体的含义:

在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。结构体是用来代表一个记录,一般的我们主要用结构体来封装一些方法或者属性,以便于调用,使用结构体一定程度上减少了代码运算量,也可以说比较方便;

二.结构体的声明:

为了定义一个结构,必须使用struct语句。struct语句为程序定义了一个带有多个成员的新的数据类型,声明的形式为:

struct struct_name
{ 
   
    //一些方法或属性
}

举例:我们要统计某一个单位的人员信息,我们可以采用结构体,如下所示:

struct Person//struct声明结构体
        { 
   
        //封装的一些属性
            public string name;
            public int age;
            public string sex;
        }

但是我们应该怎样调用呢?,如下代码所示:我们首先得对其进行实例化,然后对其中的属性进行赋值,然后输出;

static void Main(string[] args)
        { 
   
            //对结构体进行实例化
            Person ss1 = new Person();
            Person ss2 = new Person();
            ss1.name = "张三";
            ss1.sex = "男";
            ss1.age = 18;
            Console.WriteLine("我的名字叫; {0}", ss1.name);
            Console.WriteLine("性别; {0}", ss1.sex);
            Console.WriteLine("我今年; {0}岁", ss1.age);
            ss2.name = "李四";
            ss2.sex = "女";
            ss2.age = 18;
            Console.WriteLine("我的名字叫; {0}", ss2.name);
            Console.WriteLine("性别; {0}", ss2.sex);
            Console.WriteLine("我今年; {0}岁", ss2.age);
            Console.ReadLine();
        }

那么其输出结果为:
在这里插入图片描述

三.结构体的特点:

  1. 结构可带有方法、字段、索引、属性、运算符方法和事件;
  2. 结构可定义构造函数,但不能定义析构函数。但是,不能为结构定义无参构造函数。无参构造函数(默认)是自动定义的,且不能被改变;
  3. 结构不能继承其他的结构或类;
  4. 结构不能作为其他结构或类的基础结构;
  5. 结构可实现一个或多个接口;
  6. 结构成员不能指定为 abstractvirtualprotected;
  7. 结构可以不使用 New 操作符即可被实例化;
  8. 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。

四.结构体的作用:

  1. 结构体和其他类型基础数据类型一样,例如int类型、char类型,只不过结构体可以做成我们想要的数据类型;
  2. 在实际项目中,结构体是大量存在的,使用结构体来封装一些属性来组成新的类型,其目的是简化运算;
  3. 结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了;

五.结构体的注意事项:

  1. 结构体中声明的字段无法赋值:
    例如:我们在对字段name进行赋值,显示错误内容如下:
 struct Person
        { 
   
            public string name="张三";
        }

如下图:
在这里插入图片描述

  1. 结构体的构造函数中,如果有字段没有被赋值,那么默认的值为0:
    例如:
struct Person
        { 
   
            public string name;
            public int age;
            public string sex;
        }
        static void Main(string[] args)
        { 
   
            //对结构体进行实例化
            Person ss1 = new Person();
            Person ss2 = new Person();
            ss1.name = "张三";
            ss1.sex = "男";
           // ss1.age = 18;
            Console.WriteLine("我的名字叫; {0}", ss1.name);
            Console.WriteLine("性别; {0}", ss1.sex);
            //Console.WriteLine("我今年; {0}岁", ss1.age);
            ss2.name = "李四";
            ss2.sex = "女";
            //ss2.age = 18;
            Console.WriteLine("我的名字叫; {0}", ss2.name);
            Console.WriteLine("性别; {0}", ss2.sex);
           // Console.WriteLine("我今年; {0}岁", ss2.age);
            Console.ReadLine();
        }

在代码中会显示:
在这里插入图片描述

  1. 结构体可以包含其他结构体,也可以包含指向自己的指针;
  2. 结构体互相包含时,需要对其中一个进行不完整声明;
  3. 结构是C#程序员用来定义自己的值类型的最普遍的机制。结构比枚举更强大,因为它提供函数、字段、构造函数、操作符和访问控制。结构成员的缺省访问权限是private。当定义结构的成员名时,不要忘了对公有成员使用PascalCase(帕斯卡命名)规则,而对非公有成员使用camelCase(骆驼拼写法)规则。

    补充:
    PascalCase(帕斯卡命名):每一个单词的首字母都采用大写命名;
    camelCase(骆驼拼写法):第一个单词的首字母小写,其余的单词首字母大写;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185473.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 项目范围管理:范围定义[通俗易懂]

    项目范围管理:范围定义[通俗易懂]定义范围是制定项目和产品详细描述的过程。 定义范围的主要作用是:明确所收集的需求哪些将包括在项目范围内,哪些将排除在项目范围外,从而明确项目、服务或输出的边界。 范围定义的内容和作用:由于在收集需求过程中识别出的所有需求未必都包含在项目中,所以定义范围过程就是从需求文件中选取最终的项目需求,然后制定出关于项目及其产品、服务或输出的详细描述。 准备好详细的项目范围说明书,对项目成功至关重要。应根据项目启动过程中记载的主要可交付成果、假设条件和制约因素来编制项目范围说明书。在项目规划过程中,随着对项目

  • 【JAVA面试必会】JMM高并发详解(java内存模型、JMM三大特征、volatile关键字 )「建议收藏」

    【JAVA面试必会】JMM高并发详解(java内存模型、JMM三大特征、volatile关键字 )「建议收藏」volatile一定能保证线程安全吗?禁止指令重排序volatile禁止指令重排序的原理。JMM就是Java内存模型(javamemorymodel)。因为在不同的硬件生产商和不同的操作系统下,内存的访问有一定的差异,所以会造成相同的代码运行在不同的系统上会出现各种问题。所以java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能达到……………

  • 项目中常用的MySQL 优化

    项目中常用的MySQL 优化

  • Pytest(13)命令行参数–tb的使用「建议收藏」

    Pytest(13)命令行参数–tb的使用「建议收藏」前言pytest使用命令行执行用例的时候,有些用例执行失败的时候,屏幕上会出现一大堆的报错内容,不方便快速查看是哪些用例失败。–tb=style参数可以设置报错的时候回溯打印内容,可以设置参

  • Your branch and ‘XXX’ have diverged

    Your branch and ‘XXX’ have diverged目前没什么好办法,我的做法是新建一条branch,删掉这条有问题的branch。。(这份code最好保存一份)

    2022年10月30日
  • 互联网金融风控模型

    互联网金融风控模型一、市场调研目前市面主流的风控模型1、互联网金融前10名排行榜(数据截止日期2017-09-12)互联网金融公司排名分别是蚂蚁金服、陆金所、京东金融、苏宁金融、百度金融、腾讯理财通、宜信、钱大掌柜、万达金融和网易理财。1.1蚂蚁金服1.1.1大数据技术对接第三方征信公司芝麻信用分,通过用户信用历史、行为偏好、履约能力、身份特质、人脉关系五个维度对…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号