C#中可枚举类型详解

C#中可枚举类型详解

概述

C#中的枚举类型是一种特殊的值类型,用于定义一组相关的命名常量。枚举类型的成员可以是数字常量、字符串常量等,它为开发人员提供了一种更加方便、更加具有可读性和可维护性的编程方式。

定义枚举类型

在C#中定义枚举类型非常简单,只需要使用enum关键字即可。

enum WeekDay
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

以上代码定义了一个名为WeekDay的枚举类型,它包含了七个成员:MondayTuesdayWednesdayThursdayFridaySaturdaySunday。由于没有为每个成员指定数值,默认情况下,Monday的值为0,后续每个成员的值都会依次递增。

如果需要为每个成员指定数值,则可以在相应的成员名称后使用赋值语句进行初始化,如下所示:

enum WeekDay
{
    Monday = 1,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

以上代码中,Monday的值为1,后续每个成员的值都会依次递增,如Tuesday的值为2Wednesday的值为3,以此类推。

枚举类型的应用

作为方法参数

枚举类型可以作为方法参数,方便开发人员在方法调用时使用枚举成员来进行参数传递。例如,以下方法接受一个名为weekDayWeekDay类型参数:

void PrintWeekDay(WeekDay weekDay)
{
    switch (weekDay)
    {
        case WeekDay.Monday:
            Console.WriteLine("星期一");
            break;
        case WeekDay.Tuesday:
            Console.WriteLine("星期二");
            break;
        // ...
    }
}

在调用该方法时,可以直接使用枚举成员进行参数传递:

PrintWeekDay(WeekDay.Monday);

作为返回值类型

枚举类型也可以作为方法的返回值类型,例如,以下方法返回一个WeekDay类型的值:

WeekDay GetWeekDay(int day)
{
    switch (day % 7)
    {
        case 0:
            return WeekDay.Sunday;
        case 1:
            return WeekDay.Monday;
        case 2:
            return WeekDay.Tuesday;
        // ...
    }
}

该方法接受一个表示天数的整型参数,计算出该天数对应的星期几,并返回相应的枚举成员。

示例

using System;

namespace EnumExample
{
    enum Gender
    {
        Male,
        Female
    }

    class Person
    {
        public string Name { get; set; }
        public Gender Gender { get; set; }

        public override string ToString()
        {
            return $"Name: {Name}, Gender: {Gender}";
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person { Name = "Tom", Gender = Gender.Male };
            Person p2 = new Person { Name = "Mary", Gender = Gender.Female };

            Console.WriteLine(p1);
            Console.WriteLine(p2);
        }
    }
}

以上代码中,定义了一个名为Gender的枚举类型,包含两个成员:MaleFemale。同时,定义了一个包含名字和性别属性的Person类,并实例化了两个Person对象,分别是TomMary。在输出每个Person对象时,分别调用了它们的ToString方法,由于Person类重写了ToString方法,因此输出的是该对象的名字和性别信息。

输出结果:

Name: Tom, Gender: Male
Name: Mary, Gender: Female

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中可枚举类型详解 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#使用linq对数组进行筛选排序的方法

    下面是“C#使用linq对数组进行筛选排序的方法”的完整攻略。 1. 筛选数组 使用linq对数组进行筛选的方式有很多,下面介绍几种比较常用的方法。 1.1. Where 使用Where方法可以对数组进行筛选,例如筛选出数组中大于等于10的元素,可以这样写: int[] arr = { 1, 5, 8, 10, 13, 15 }; var filteredA…

    C# 2023年6月1日
    00
  • asp.net ubb使用代码

    当我们在开发一个网站或者一个论坛系统时,通常都需要使用 UBB(ultra bulletin board) 编辑器。在 ASP.NET 中,使用 UBB 编辑器可以轻松实现文字编辑、图片上传、表情等功能。而如何使用 ASP.NET 代码实现 UBB 编辑器的功能呢?下面是一个完整的攻略。 步骤一:引用 UBB 控件 首先,在 ASP.NET 项目中,我们需要…

    C# 2023年5月31日
    00
  • Unity报错InvalidOperationException: out of sync的解决

    针对Unity报错InvalidOperationException:outofsync的解决,我们可以采取以下步骤: 步骤1:清理Unity资源和缓存 首先我们可以尝试清理Unity的资源和缓存,方法如下: 关闭Unity编辑器。 在项目文件夹下找到 Library 文件夹,将其删除。 重新启动Unity编辑器,等待它重新构建项目的 Library 文件夹…

    C# 2023年5月14日
    00
  • C# Xamarin利用ZXing.Net.Mobile进行扫码的方法

    以下是C# Xamarin利用ZXing.Net.Mobile进行扫码的方法的完整攻略: 1. ZXing.Net.Mobile的介绍 1.1 什么是ZXing.Net.Mobile ZXing.Net.Mobile是一款基于ZXing的二维码扫描框架,支持多种平台,包括Xamarin.Android、Xamarin.iOS、Windows Phone、Wi…

    C# 2023年6月3日
    00
  • c#网站WebConfig中域名引用示例介绍

    下面是“c#网站WebConfig中域名引用示例介绍”的完整攻略: 1. 简介 WebConfig是c#网站的配置文件,c#网站是一种基于.NET框架的网站开发语言。在WebConfig中,我们可以使用域名引用到其他网站或资源。 2. 域名引用的语法 在WebConfig中进行域名引用的语法格式如下: <configuration> <sy…

    C# 2023年5月31日
    00
  • 武装你的WEBAPI-OData之API版本管理

    本文属于OData系列 Intro 对外提供WEBAPI时,如果遇上了版本升级,那么控制WEBAPI的版本也是非常必要的。OData官方提供了版本控制以及管理的解决方案,我个人是实践体会是不好用,好在社区提供了对应的nuget包,与.NET主版本同步更新。 介绍 ASP.NET API Versioning是一个提供ASP.NET WEBAPI版本管理的包,…

    C# 2023年5月9日
    00
  • C# File.WriteAllText()方法: 将指定的字符串写入文件,覆盖文件中的所有内容

    File.WriteAllText() 是C#中的一个静态方法,主要作用是向文件写入文本并替换文件内容。它的使用方法如下: File.WriteAllText(string path, string contents); 其中,path参数是要写入的文件路径;contents参数是要写入的文本内容。 下面通过两个例子来详细讲解 File.WriteAllTe…

    C# 2023年4月19日
    00
  • Parallel.For循环与普通for循环的性能比较

    针对“Parallel.For循环与普通for循环的性能比较”的话题,我将给出一份详细的攻略,包含以下几个部分: 什么是Parallel.For循环? Parallel.For的性能优势是什么? 如何使用Parallel.For循环? Parallel.For循环的示例说明 普通for循环与Parallel.For循环的性能比较 下面就一步一步进行介绍。 1…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部