C#学习第4天:枚举与结构体

在C#编程中,枚举和结构体提供了一种简化代码表达和管理数据的方式。它们可以应用于各种场景,使代码更加易读和可维护。

枚举(Enum)


枚举是一种特殊的值类型,通常用于表示一组相关常量。

定义枚举

public enum DaysOfWeek
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
}

使用枚举

DaysOfWeek today = DaysOfWeek.Monday;

if (today == DaysOfWeek.Monday)
{
    Console.WriteLine("Start of the work week.");
}
  • 默认情况下,枚举的底层类型是int,从0开始递增。
  • 可以指定枚举的基础类型以及具体数值。 
public enum ErrorCodes : byte
{
    None = 0,
    NotFound = 1,
    InvalidOperation = 2
}

结构体(Struct)


结构体是值类型,用于封装小型数据结构。它们类似于类,但有一些关键区别。

定义结构体

public struct Point
{
    public int X { get; set; }
    public int Y { get; set; }

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }
}

使用结构体

Point p1 = new Point(10, 20);
Console.WriteLine($"X: {p1.X}, Y: {p1.Y}");

类与结构体的区别


存储位置:

  • 类是引用类型,实例存在堆上。
  • 结构体是值类型,实例通常存在栈上。

继承:

  • 类支持继承,可以有基类。
  • 结构体不支持继承(但可以实现接口)。

内存分配:

  • 类分配在堆上,垃圾回收负责清理。
  • 结构体分配在栈上,超出作用域后自动清理。

使用场景:

  • 类适用于需要复杂行为和对象生命周期管理的情况。
  • 结构体适合用于定义简单、小型的数据结构。

实践习题


枚举应用

  • 创建一个Season枚举,包含四季,并编写程序根据当前季节输出相应活动。
public enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}

public class Program
{
    public static void Main(string[] args)
    {
        Season currentSeason = Season.Autumn;
        switch (currentSeason)
        {
            case Season.Spring:
                Console.WriteLine("Time for some gardening!");
                break;
            case Season.Summer:
                Console.WriteLine("Let's go to the beach!");
                break;
            case Season.Autumn:
                Console.WriteLine("Perfect time for hiking.");
                break;
            case Season.Winter:
                Console.WriteLine("Get cozy with hot chocolate.");
                break;
        }
    }
}

 

结构体设计

  • 定义一个Rectangle结构体,包含宽度和高度属性,实现计算面积的方法。
public struct Rectangle
{
    public double Width { get; set; }
    public double Height { get; set; }

    public Rectangle(double width, double height)
    {
        Width = width;
        Height = height;
    }

    public double Area()
    {
        return Width * Height;
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        Rectangle rect = new Rectangle(5.0, 10.0);
        Console.WriteLine($"Area of rectangle: {rect.Area()}");
    }
}

 

类与结构体的选择

  • 考虑银行账户信息的存储需求,讨论采用类还是结构体更合适,并解释理由。

对于银行账户信息,采用类更为合适,因为:

  • 银行账户可能涉及复杂行为(如交易历史、计息)。
  • 类支持继承和多态,可以扩展功能。
  • 类适合处理生命周期较长的对象,允许共享和修改状态。


今天就到这里,想了想还是直接把习题答案给上去。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ghost143

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值