结构与枚举类型

结构和枚举是C#中两种常用的值类型,实际上,在C#中使用基本数据类型的原型都是结构,如数值类型、字符类型和布尔类型;本课,我们将了解如何创建并使用结构类型和枚举类型。

结构类型

结构的来定义和使用,与类都非常相似,只不过类是引用类型,而结构是值类型。在结构中可以定义的成员包括构造方法、常量、字段、方法、属性、索引器、运算符、事件及嵌入类型。

定义结构时需要struct关键字,如下面的代码。

C#
using System;
public struct SAuto
{
    public string Model { get; set; }
    public void Drive()
    {
        Console.WriteLine(Model + " 行驶中...");
    }
}

下面的代码,我们在Main()方法中测试SAuto结构的使用。

C#
namespace HelloProject
{
    class Program
    {
        static void Main(string[] args)
        {
            SAuto car1 = new SAuto() { Model = "C19" };
            SAuto car2 = car1;
            car1.Drive();
            car2.Drive();
            car2.Model = "R20";
            car1.Drive();
            car2.Drive();
        }
    }
}

代码执行结果如下图。

通过本例,我们可以看到值类型与引用类型在传递数据时的方式是不同的,当我们将car1赋值给car2时,实际上是复制了car1的所有数据,也就是说,car1和car2是不同的数据区域,当修改其中一个数据时,是不是影响另一个的。

枚举类型

枚举类型一般是将一组相关的数据进行组织,并以命名的方式加以区分,如星期几。下面的代码,我们创建一个表示性别的枚举。

C#
public enum ESex
{
    Unknow = 0,
    Male = 1,
    Female = 2
}

代码中,我们使用enum关键字定义了ESex枚举类型,其中包括三个成员,即Unknow、Male和Female。枚举成员为命名成员,但它们也有对应的数值,默认情况下就是int类型。以下定义的两个枚举类型与ESex类型完全相同。

C#
public enum ESex1 : int
{
    Unknow = 0,
    Male = 1,
    Female = 2}

public enum ESex2 : int
{
    Unknow,
    Male,
    Female
}

下面的代码,我们在Main()方法中测试ESex枚举的应用。

C#
using System;
namespace HelloProject
{
    class Program
    {
        static void Main(string[] args)
        {
            ESex sex = ESex.Male;
            Console.WriteLine(sex);
            Console.WriteLine((int)sex);
            Console.WriteLine((ESex)2);
        }
    }
}

代码执行结果如下图。

本例共有三个输出。其中,第一个输出显示了枚举值,第二个输出显示了枚举对应的数值,第三个输出显示将数值转换为枚举值的结果。

此外,除了int类型,枚举值的数值类型还可以是byte、sbyte、short、ushort、uint、long和ulong类型。

本站内容均为原创作品,转载请注明出处,本页面网址为:http://caohuayu.com/chy/article/Article.aspx?code=cc002004