.net----结构和枚举

news2024/11/14 19:18:13

结构和枚举

  • 结构
    • 结构的声明和调用
      • 声明
      • 调用
    • 结构:结构的成员
  • 枚举
    • 枚举的使用
    • 枚举:Flags枚举

结构

  • 轻量级的类,与类很相似,均为包含数据成员和函数成员的数据结构

  • 结构与类的区别

  • 结构是值类型且被称为具有值语义;而类是引用类型且被称为具有引用语义

  • 结构不像类那样存在继承,所有结构都直接继承自 System.ValueType

  • 结构类型永远不会是抽象的,并且始终是隐式密封的

  • 与类不同,结构不允许声明无形参实例构造函数;每个结构隐式地具有一个无形参实例构造函数,始终返回相同的值;可以声明具有形参的实例构造函数

  • 在结构中不允许声明析构函数

结构的声明和调用

声明

[特性]
[结构修饰符][partial] struct  结构名 [类型形参] [: 基接口[类型形参约束]] 
{
结构体
}[;]

调用

结构名 结构变量名= new结构名 ([参数表]);

结构名 结构变量名;
public struct Point       // 平面坐标点
  {
    public int x, y;
    public Point(int x, int y) //有2个参数的构造函数
    {
        this.x = x;  this.y = y;
    }
  }
  class PointTest
  {
    static void Main()
    {
        Point p1 = new Point ();    //调用默认构造函数
        Console.WriteLine("平面坐标 1: x = {0}, y = {1}", p1.x, p1.y);
        Point p2 = new Point(10, 10);  //调用有2个参数的构造函数
        Console.WriteLine("平面坐标 2: x = {0}, y = {1}", p2.x, p2.y);
        Point p3; 
        //Console.WriteLine("平面坐标3: x = {0}, y = {1}", p3.x, p3.y);//编译错误
        p3.x = 22;  p3.y = 33;
        Console.WriteLine("平面坐标 3: x = {0}, y = {1}", p3.x, p3.y);
     }
  }

结构:结构的成员

  • 常量、字段、方法、属性、事件、索引器、运算符重载、带参数构造函数、嵌套结构(例10.2)等

  • 结构不支持继承,结构成员的声明可访问性不能是protected或protected internal,函数成员不能是abstract或virtual

  • 结构不能声明默认构造函数(没有参数的构造函数)或析构函数

  • 实例字段声明中不允许含有变量初始值设定项,但静态字段可以

枚举

是值类型的一种特殊形式,用于声明一组命名的常量
可以将基础类型的值分配给枚举,反之亦然
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

枚举的使用

 enum Color { Red, Green, Blue }
 Color color1 = Color.Blue;
        if (color1 == Color.Red) { Console.WriteLine("color1 is red"); }
        else { Console.WriteLine("color1 is not red"); }
        Color color2 = Color.Red;
        switch (color2)
        {
            case Color.Red:
                     Console.WriteLine("color2 is red"); break; 
            case Color.Green:
                     Console.WriteLine("color2 is green"); break;
            case Color.Blue:
                     Console.WriteLine("color2 is blue"); break;
        }
        Console.WriteLine("Color.Green = {0}", Color.Green);
        Console.WriteLine("Color.Green = {0}", (int)Color.Green);

枚举:Flags枚举

  • 如果要表示复合状态,即对应枚举中的多个变量,则可以使用[Flags]特性标记

  • 使用[Flags]特性标记的枚举,可以将枚举作为位域(即一组标志)处理,其成员常量对应于整数的不同位,例如:0x01、0x02、0x04、0x08等
    在这里插入图片描述

        enum Days {Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday }; 
        enum BoilingPoints {Celcius = 100, Fahrenheit = 212};//沸点的摄氏和华氏温度
        [FlagsAttribute]
        enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 }; //4种颜色

        public static void Main()
        {
            Type weekdays = typeof(Days); Type boiling = typeof(BoilingPoints);

            Console.WriteLine("一周7天,对应于枚举类型Days中的值:");
            foreach (string s in Enum.GetNames(weekdays))
              Console.Write("{0}={1} ", s, Enum.Format(weekdays, Enum.Parse(weekdays, s), "d"));

            Console.WriteLine("\n枚举类型BoilingPoints定义了如下值项:");
            foreach (string s in Enum.GetNames(boiling))
              Console.Write("{0}={1} ", s, Enum.Format(boiling, Enum.Parse(boiling, s), "d"));

            Colors myColors = Colors.Red | Colors.Blue | Colors.Yellow;
            Console.WriteLine("\n枚举变量myColors存放如下颜色的组合:{0}", myColors);
            Console.ReadKey();
        }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/32731.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Lilishop商城】No2-2.确定软件架构搭建一(本篇包括MVC框架、持久框架、缓存、认证工具、安全框架等)

仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在: 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 上一篇已经看了项目的开发架构,都需要哪些技术,都按照哪些规范,都哪…

免杀Backdoor-factory

Patch ● 通过替换EXE、DLL、注册表等方法修复系统漏洞或问题的方法 ● BDF:向二进制文件中增加或者删除代码内容 ○ 某些受保护的二进制程序无法patch ○ 存在一定概率文件会被patch坏掉 后门工厂 ● 适用于windows PE x32/x64和Linux ELF x32/x64(OSX) ● 支持…

【JVM】内存模型:原子性、可见性、有序性的问题引出与解决

一、内存模型 很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模型】是 Java MemoryModel(JMM)的意思。 简单的说,JMM 定义了一套在多线程读写共享数据时(成员变量、数组)时&#x…

(七)RabbitMQ持久化

RabbitMQ持久化1、概念2、队列持久化3、消息持久化4、不公平分发5、预取值1、概念 默认情况下 RabbitMQ 退出或由于某种原因崩溃时,它忽视队列和消息,除非告知它不要这样做。确保消息不会丢失需要做两件事:我们需要将队列和消息都标记为持久化…

广义OOD检测最新综述

arXiv在2021年10月21日上传的论文**“Generalized Out-of-Distribution Detection: A Survey“,作者来自新加坡的南洋理工大学(NTU)和美国的威斯康星大学Madison分校**。 OOD检测对确保机器学习系统的可靠性和安全性至关重要,例如…

秦皇岛科学选育新品种 国稻种芯·中国水稻节:河北谱丰收曲

秦皇岛科学选育新品种 国稻种芯中国水稻节:河北谱丰收曲 冀时客户端报道(河北台 张志刚 米弘钊 赵永鑫) 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 国稻种芯中国水稻节 中国农民丰收节国际贸易促进会 中国三农智库网-功能性农业农业…

Java对象拷贝原理剖析及最佳实践

作者:宁海翔 1 前言 对象拷贝,是我们在开发过程中,绕不开的过程,既存在于Po、Dto、Do、Vo各个表现层数据的转换,也存在于系统交互如序列化、反序列化。 Java对象拷贝分为深拷贝和浅拷贝,目前常用的属性拷…

2023年系统规划与设计管理师-学习计划安排

一.学习计划和安排: 序号 学习内容 分数以及题型 学习安排 完成日期 1 浏览教程, 了解知识结构 1天 11/24 2 前三章内容: 课本, 单元练习, 思维导图, 总结归纳, 第一遍背诵 分数占…

希望所有计算机学生都知道这些宝藏课程

数据结构 青岛大学——王卓老师的数据结构与算法基础 浙江大学——陈越、何钦铭老师的数据结构课程 清华大学——邓俊辉老师的数据结构课程 北京大学——数据结构基础课程 操作系统 哈工大——李治军老师的操作系统 清华大学——操作系统原理 南京大学——操作系统概述 计算…

机器学习知识经验分享之一:卷积神经网络介绍

文章目录前言一、卷积神经网络的构成1.卷积层2.池化层3.激活函数4.批量归一化5.损失函数二、卷积神经网络的特点总结前言 本系列文章将对机器学习知识进行分享总结。便于大家从理论层面了解人工智能基础原理,从而更好的运用算法发论文写作以及实际应用。关注即免费…

CNI设计解读

何为cni? kubernetes在设计网络方案的时候并没有设计统一的网络方案,只提供了统一的容器网络接口也就是所谓cni,这么做的目的就是为了遵循kubernets的核心理念OutOfTree,简单来讲就是专注于自身核心能力,将其他能力类…

使用albumentations对coco进行数据增强

数据增强的必要性 目前几乎所有描述最先进的图像识别模型的论文都使用了基本的增强技术 深度神经网络需要大量的训练数据来获得良好的结果,并防止过度拟合,然而要获得足够的训练样本往往非常困难,多种原因可能使得收集足够的数据非常困难&a…

【计算机毕业设计】27.仓库管理系统源码

一、系统截图(需要演示视频可以私聊) 摘 要 网络的广泛应用给生活带来了十分的便利。所以把仓库管理与现在网络相结合,利用JSP技术建设仓库管理系统,实现仓库管理系统的信息化。则对于进一步提高公司的发展,丰富仓库管…

户外运动耳机推荐、十大户外运动耳机品牌推荐排名清单

最近南方的天气有点秋高气爽,这样的天气要说最适合进行什么运动,那户外徒步肯定是最佳选择,在这样适宜的天气下去拥抱大自然,体验户外山野环境的美好绝对是个很棒的过程!但是一个人的长时间徒步多少还是会少了些味道&a…

408 | 大纲知识点考点冲刺 复习整理 ——【计网】第三章 数据链路层

自用冲刺笔记整理。 部分图片来自王道。 加油ヾ(◍∇◍)ノ゙ (一)数据链路层的功能 结点: 主机、 路由器。帧 : 链路层的协议数据单元, 封装网络层数据报。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,…

11.24Spring学习第四天

整合Mybatis(重点) 步骤 1.引入依赖 <!--引入相关依赖--><!-- spring jdbc --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></…

在字节跳动做了5年软件测试,12月无情被辞,想给划水的兄弟提个醒...

前言 先简单交代一下背景吧&#xff0c;某不知名 985 的本硕&#xff0c;17 年毕业加入字节&#xff0c;以“人员优化”的名义无情被裁员&#xff0c;之后跳槽到了有赞&#xff0c;一直从事软件测试的工作。之前没有实习经历&#xff0c;算是5年的工作经验吧。 这5年之间完成…

如何在数据库只保存oss上的文件名, 当查询数据时根据字段的文件名, 获取oss的公网访问地址,并对字段内容重写

如何在数据库只保存oss上的文件名, 当查询数据时根据字段的文件名, 获取oss的公网访问地址,并对字段内容重写. 有这样一个需求, 图片上传到oss 上, 返回文件名和公网访问地址, 但是要求数据库中只存储文件名称. 有两个目的: 数据库只存储文件名称, 方便后期oss 上数据迁移到其他…

面试官:在 Java 中 new 一个对象的流程是怎样的?彻底被问懵了。。

对象怎么创建&#xff0c;这个太熟悉了&#xff0c;new一下(其实还有很多途径&#xff0c;比如反射、反序列化、clone等&#xff0c;这里拿最简单的new来讲)&#xff1a; Dog dog new Dog();我们总是习惯于固定语句的执行&#xff0c;却对于背后的实现过程缺乏认知&#xff0…

[附源码]java毕业设计医院门诊信息管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…