2014-12-13 93 views
0

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

枚举月{一月= 1,Fabruary,三月,四月,五月,六月,七月,八月,九月,十月,
十一月,十二月}

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); 
    } 
+0

确切的错误是什么?在哪一行? – 2014-12-13 14:18:07

+0

它说错误在这一行 'date.PrintMonth(m_Month);' – user3144416 2014-12-13 14:20:51

+0

int x =(int)Month? – Codeek 2014-12-13 14:21:52

回答

1

你只需要编写枚举值:

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

所以你PrintMonth可以采取一个int或一个月值,一个ToString()的枚举返回其字符串表示。

+0

它的工作,非常感谢! – user3144416 2014-12-14 23:44:06

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

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

+0

也谢谢! – user3144416 2014-12-14 23:44:34