在控制台中显示枚举C#

时间:2014-12-13 14:15:31

标签: c# enums

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

  

enum月{January = 1,Fabruary,March,April,May,June,July,August,September,October,
  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

  

static void Main(string [] args)

  {
        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);
    }

2 个答案:

答案 0 :(得分:1)

您只需要编写枚举值:

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

因此,您的PrintMonth可以采用int或Month值,枚举的ToString()返回其字符串表示。

答案 1 :(得分:0)

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

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