欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > c#枚举和结构体类型详解

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

2025/9/29 11:56:23 来源:https://blog.csdn.net/qq_52905520/article/details/144808881  浏览:    关键词: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;}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词