当前位置: 首页 > article >正文

c#枚举和结构体类型详解

目录

枚举类型

1,什么是枚举

2,枚举的定义

3,枚举的基础类型

4,枚举的使用

(1)获取枚举的值

(2)也可以通过整型获得对应的枚举名称

(3)转换枚举为字符串

(4)也可以从字符串获得对应的枚举名称

结构体

1,结构体的基本定义

2,结构体的特点


枚举类型

1,什么是枚举

顾名思义,枚举是用来表示一定集合的变量,通常用来表示一组相关的标识符,如 状态,类别等,比如针对“手机”这种类型,我们可以枚举出小米手机,苹果手机, 华为手机等等

2,枚举的定义

在c#中用enum关键字来定义枚举类型,例:

enum EnumName

{

        Value1, //默认值从0开始

        Value2,

        Value3,

        ……

}

具体示例,以周一到周日为例:

enum Days

{

        Sunday, //默认值为0

        Monday, //默认值为1

        Tuesday, //默认值为2

        Wednesday, //默认值为3

        Thursday, //默认是为4

        Friday, //默认值为5

        Saturday //默认值为6

}

在这个例子中,Days就是一个枚举变量,其包含了周一到周日七个值,默认情况 下值从0开始递增

当然也可以自定义枚举的值,例:

enum Days

{

        Sunday=1,

        Monday=2,

        Tuesday=3,

        Wednesday=4,

        Thursday=5,

        Friday=6,

        Saturday=7

}

在这个例子中,Sunday被赋值为1,Monday被赋值为2,以此类推

3,枚举的基础类型

在c#中,枚举的底层类型默认是int,但是你可以显式的指定底层类型,常见的底 层类型包括byte,short,long等,例

enum Days : byte

{

        Sunday = 1,

        Monday = 2,

        Tuesday = 3

}

这段代码,Days枚举变量的底层类型是byte,而不是默认的int,这可以节省内层

4,枚举的使用

(1)获取枚举的值

可以将枚举类型的值赋给一个变量,并且可以将枚举值强制转换为别的类型, 比如整型

Enum Days

{

        Sunday=1,

        Monday=2,

        Tuesday=3,

        Wednesday=4,

        Thursday=5,

        Friday=6,

        Saturday=7

}

int today=(int)Days.Monday; //输出2

Days today=Days.Monday; //输出Monday

也可以将一个整型强制转换为枚举类型

Days today=Days.Monday;

today=(Days)200;

(2)也可以通过整型获得对应的枚举名称

可以通过Enum.GetName方法将整数值转换回枚举名称,或者通过 Enum.GetValues获取枚举类型的所有值

例:

int value=3;

String dayName=Enum.GetName(typeof(Days),value); //返回Tuesday

例:

foreach (var day in Enum.GetValues(typeof(Days)))

{

        Console.WriteLine(day); // 输出所有枚举值:Sunday, Monday, Tuesday...

}

(3)转换枚举为字符串

可以使用Enum.ToString()方法将枚举值转换为字符串

Days today = Days.Monday;

Console.WriteLine(today.ToString());  // 输出 Monday

(4)也可以从字符串获得对应的枚举名称

可以使用Enum.Parse或Enum.TryParse方法从字符串中获取枚举值

string dayString = "Friday";

Days day = (Days)Enum.Parse(typeof(Days), dayString);

Console.WriteLine(day);  // 输出 Friday

结构体

1,结构体的基本定义

C#中的结构体是通过struct关键字定义的,一个结构体可以包含字段、属性、方法、构造等成员

基本语法如下:

struct Point

{

    public int X;

    public int Y;



    public Point(int x, int y)

    {

        X = x;

        Y = y;

    }



    public void Display()

    {

        Console.WriteLine("Point({X}, {Y})");

    }

}



class Program

{

    static void Main()

    {

        Point p1 = new Point(10, 20);

        p1.Display();  // 输出: Point(10, 20)

    }

}

2,结构体的特点

(1)结构体是值类型,因此他们直接存储在栈中,当一个结构体的实例被赋值或传递时,整个结构体的数据会被复制

例:

Point p1 = new Point(10, 20);

Point p2 = p1;  // p2 是 p1 的副本

p2.X = 100;

Console.WriteLine(p1.X);  // 输出 10,p1 的值未改变

Console.WriteLine(p2.X);  // 输出 100

(2)不能继承其他结构体类型,结构体不能从其他结构体或类继承

(3)没有默认构造函数,结构体不能有显示的无参数构造函数,因为编译器会提 供一个默认的无参数构造函数,例:

struct Point

{

    public int X;

    public int Y;

    // 无法定义显式的默认构造函数

    // public Point() { }  // 编译错误
    public Point(int x, int y)

    {

        X = x;

        Y = y;

    }

}


http://www.kler.cn/a/463712.html

相关文章:

  • OWASP ZAP之API 请求基础知识
  • Oracle ASM命令行工具asmcmd命令及其使用方法
  • JAVA:利用 Redis 实现每周热评的技术指南
  • JeeSite 快速开发平台:全能企业级快速开发解决方案|GitCode 光引计划征文展示
  • C# 在PDF中添加和删除水印注释 (Watermark Annotation)
  • mysql 忘记root密码 无密码登录系统 配置文件怎么改?
  • 【2024年-6月-28日-开源社区openEuler实践记录】探索 easy - software:简化软件部署与管理的开源方案
  • Ubuntu如何安装jdk并切换到不同的jdk版本
  • 【gopher的java学习笔记】mybatis的mapper是什么
  • 【C++】模板使用总结
  • MyBatis执行一条sql语句的流程(源码解析)
  • 深度学习——损失函数汇总
  • 【第四期书生大模型实战营基础岛】L1G5000——XTuner 微调个人小助手认知任务
  • 工业相机基本参数
  • Redis——主从复制模式
  • 一道C++面试题关于nullptr的知识点
  • Echarts+vue电商平台数据可视化——webSocket改造项目
  • ES数据管理
  • UnityRenderStreaming使用记录(三)
  • 远程服务器训练模型,使用tmux防止训练终止
  • Go语言方法和接收器类型详解
  • vue3配置测试环境、开发环境、生产环境
  • UNI-APP_i18n国际化引入
  • 无人机技术突飞猛进,超大集群飞行技术详解
  • http报头解析
  • 爬虫与反爬虫实现全流程