C#(十)之枚举类型与结构体

简介: 枚举类型基本用法;官方给的C#结构体的特点、基本用法。

QQ图片20220426105856.jpg

C#中的枚举类型结构体


一、枚举类型


枚举类型使用enum定义:


// 枚举有值也有键。和数组类似,默认从0开始,依次加1.
        // 但是如果枚举中的几个元素被赋值,其之后的元素,都在其上加1
        // :后边的类型是指定枚举中数值(键值)的类型,默认int
        public enum Weekdays : int
        {
            one = 3,
            two,//4
            three,//5
            four,//6
            five,//7
            six = 12,
            seven//13
        }
        enum our {
            a = 1,
            b,
            c = 5,
            d,
            e
        }


枚举有值也有键。和数组类似,默认从0开始,依次加1.


但是如果枚举中的几个元素被赋值,其之后的元素,都在其上加1(原则上声明枚举不赋初始值)


:后边的类型是指定枚举中数值(键值)的类型,默认int


基本用法:实例


// 定义枚举类型的变量写法
Weekdays week = Weekdays.one;
if (week == Weekdays.one || week == Weekdays.seven)
{
    Console.WriteLine("你说的对");
}
// 并无实际意义,只做展示。


一些语法我觉得和PHP的数组差不多:有key值,也有value。


将数值转换为枚举中对应的值


// 将数值转换为枚举中对应的值
Weekdays today;
// 将3强制转换为枚举类型
today = (Weekdays)3;
Console.WriteLine(today);   // 输出one,


将枚举值转化为数值


Weekdays newtoday;
newtoday = Weekdays.seven;
int changetoday = (int)newtoday;
Console.WriteLine(changetoday); // 输出13


枚举类型是可以用来计算的


// 枚举类型可计算
Weekdays yesDay;
yesDay = Weekdays.three + 2;
Console.WriteLine(yesDay); // 输出five
/*枚举的计算属性*/
for (Weekdays i = Weekdays .one; i <= Weekdays .five; i++)
{
      Console.WriteLine(i);  // 7
}//*/
// 循环输出 one two three four five 
// 如果有的值是有默认值的情况下:
our bb = our.d;
Console.WriteLine((int)bb); // 输出6。这个没什么可说的


二、结构体:


官方给的C#结构体的特点:


1:结构可带有方法、字段、索引、属性、运算符方法和事件。(原则上不在结构体中声明方法)


2:结构可定义构造函数,但不能定义析构函数。但是,您不能为结构定义默认的构造函数。默认的构造函数是自动定义的,且不能被改变。


3:与类不同,结构不能继承其他的结构或类。


4:结构不能作为其他结构或类的基础结构。


5:结构可实现一个或多个接口。


6:结构成员不能指定为 abstract、virtual 或 protected。


7:当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。


8:如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。


结构体使用struct来定义:


// 定义一个学生结构体
struct student {
    public int xuhao;
    public int age;
    public string name;
    public string birthday;
}


结构体把就好像是一个预定义的对象。需要使用的时候,实例化,赋值,调用就可以了。


结构体除了可以使用public定义变量之外,还可使用private定义变量。


// 定义一个学生结构体
struct student {
   private int xuhao;
   private int age;
   private string name;
   private string birthday;
   public void result(int t, int a, string s, string d)
    {
         xuhao = t;
         age = a;
         name = s;
         birthday = d;
     }
     public void display()
     {
         Console.WriteLine(name);
     }
}
static void Main(string[] args)
{
     // 使用设定好的结构定义一个学生
     /*gc.xuhao = 01;
     gc.age = 23;
     gc.name = "gc";
     gc.birthday = "2019-01-18";
     Console.WriteLine(gc);  // 输出的值为:gc.Program+student
     Console.WriteLine(gc.name); // 输出gc//*/
     student gc = new student();
     gc.result(01, 23, "gc", "2019-01-18");
     gc.display(); // 输出打印信息  gc
}


测试使用完整代码:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace gc
{
    class Program
    {
        public enum Weekdays : int
                {
                    one = 3,
                    two,//4
                    three,//5
                    four,//6
                    five,//7
                    six = 12,
                    seven//13
                }
        enum our {
            a = 1,
            b,
            c = 5,
            d,
            e
        }
        // 定义一个学生结构体
        struct student {
            private int xuhao;
            private int age;
            private string name;
            private string birthday;
            public void result(int t, int a, string s, string d)
            {
                xuhao = t;
                age = a;
                name = s;
                birthday = d;
            }
            public void display()
            {
                Console.WriteLine(name);
            }
        }
        /* C#主要的运行函数,就是main函数 */
        static void Main(string[] args)
        {
            // 定义枚举类型的变量写法
            Weekdays week = Weekdays.one;
                        if (week == Weekdays.one || week == Weekdays.seven)
                        {
                            Console.WriteLine("你说的对");
                        }
                        Weekdays today;
                        // 将3强制转换为枚举类型
                        today = (Weekdays)3;
                        Console.WriteLine(today);   // 输出one,将数值转换为枚举中对应的值
                        Weekdays newtoday;
                        newtoday = Weekdays.seven;
                        int changetoday = (int)newtoday;
                        Console.WriteLine(changetoday); // 输出13 ,将枚举值转化为数值
                        // 枚举类型可计算
                        Weekdays yesDay;
                        yesDay = Weekdays.three + 2;
                        Console.WriteLine(yesDay); // 输出five
            /*枚举的计算属性*/
            /*for (week i = week.one; i <= week.five; i++)
            {
                Console.WriteLine(i);
            }//*/
            // 循环输出 one two three four five
            /*// 如果有的值是有默认值的情况下:
            our bb = our.d;
            Console.WriteLine((int)bb); // 输出6。这个没什么可说的//*/
            // 使用设定好的结构定义一个学生
            /*gc.xuhao = 01;
            gc.age = 23;
            gc.name = "gc";
            gc.birthday = "2019-01-18";
            Console.WriteLine(gc);  // 输出的值为:gc.Program+student
            Console.WriteLine(gc.name); // 输出gc//*/
            student gc = new student();
            gc.result(01, 23, "gc", "2019-01-18");
            gc.display(); // 输出打印信息  gc
        }
    }
}


目录
相关文章
|
6月前
|
存储 C#
C#数据类型之结构体介绍
C#数据类型之结构体介绍
|
6月前
|
C#
C#数据类型之枚举类型
C#数据类型之枚举类型
134 0
|
6月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
277 0
|
3月前
|
存储 C#
揭秘C#.Net编程秘宝:结构体类型Struct,让你的数据结构秒变高效战斗机,编程界的新星就是你!
【8月更文挑战第4天】在C#编程中,结构体(`struct`)是一种整合多种数据类型的复合数据类型。与类不同,结构体是值类型,意味着数据被直接复制而非引用。这使其适合表示小型、固定的数据结构如点坐标。结构体默认私有成员且不可变,除非明确指定。通过`struct`关键字定义,可以包含字段、构造函数及方法。例如,定义一个表示二维点的结构体,并实现计算距离原点的方法。使用时如同普通类型,可通过实例化并调用其成员。设计时推荐保持结构体不可变以避免副作用,并注意装箱拆箱可能导致的性能影响。掌握结构体有助于构建高效的应用程序。
102 7
|
3月前
|
C#
C# 面向对象编程(三)——接口/枚举类型/泛型
C# 面向对象编程(三)——接口/枚举类型/泛型
31 0
|
6月前
|
存储 C#
C#.Net筑基-类型系统②常见类型--结构体类型Struct
本文介绍了C#中的结构体(struct)是一种用户自定义的值类型,适用于定义简单数据结构。结构体可以有构造函数,能定义字段、属性和方法,但不能有终结器或继承其他类。它们在栈上分配,参数传递为值传递,但在类成员或包含引用类型字段时例外。文章还提到了`readonly struct`和`ref struct`,前者要求所有字段为只读,后者强制结构体存储在栈上,适用于高性能场景,如Span和ReadOnlySpan。
|
存储 C#
C#基础⑥.1——枚举、结构体
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。也就是一些固定范围的值。
C#视频-结构体
C#视频-结构体
56 0
【C#视频】常量、枚举、结构体、数组
【C#视频】常量、枚举、结构体、数组
|
存储 C#
C#基础Ⅵ❶-枚举、结构体
C#基础Ⅵ❶-枚举、结构体