在控制台 C# 中显示枚举

本文关键字:显示 枚举 控制台 | 更新日期: 2023-09-27 18:34:05

我有一个作业,我必须得到一个日期,然后以不同的格式显示它(MM/DD/YYYY,DD/MM/YYYY,月份的dd YYYY等等......月份必须是枚举,我必须在单独的类Date中制作它。我首先尝试将枚举转换为带有switch的字符串,但当我从控制台解析数字时总是出现错误。这是代码:

枚举月 { 一月 = 1, 法布鲁里, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月,
11月、12月 }

class Date
{
    private int m_Day, m_Year;
    private Month m_Month;
    
    public Date(int day, Month month, int year)
    {
        this.m_Day = day;
        this.m_Month = month;
        this.m_Year = year;
    }
    public void Print()
    {
        string month = "";
        Console.WriteLine(PrintMonth(month));
    }
    public string PrintMonth(string month)
    {
        int x = (int)Month;
        switch (x)
        {
            case 1:
                month = "January";
                break;
            case 2:
                month = "Fabruary";
                break;
            case 3:
                month = "March";
                break;
            case 4:
                month = "April";
                break;
        }
        return month;
    }
    public int Day
    {
        get { return m_Day; }
        set { if(Day>=0&&Day<=31)m_Day = value; }
    }
    public Month Month
    {
        get { return m_Month; }
        set { if (Month >= Month.January && Month <= Month.December)m_Month = value; }
    }
    public int Year
    {
        get { return m_Year; }
        set { m_Year = value; }
    }
}

这就是Main

静态空 主(字符串[] 参数)

  {
        int m_Day=0, m_Year=0;
        Month m_Month=0;
        Date date = new Date(m_Day,m_Month,m_Year);
        int month = int.Parse(Console.ReadLine());
        m_Month = (Month)month;
        date.PrintMonth(m_Month);
    }

在控制台 C# 中显示枚举

你只需要写枚举值:

enum Month
{
    January=1,
    February=2
}
static void Main(string[] args)
{
    Console.WriteLine(((Month)1));
}

所以你的 PrintMonth 可以采用 int 或 Month 值,枚举的 ToString() 返回其字符串表示形式。

  m_Month = (Month)month;
        date.PrintMonth(m_Month.ToString());

但它不是正确的实施方式。您应该使用 Enum.Parse 或 Enum.TryParse 并使用 (int)Enum 获取整数值,并使用 Enum.ToString() 获取字符串值