我有一个作业,我必须得到一个日期,然后以不同的格式显示它(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); }
答案 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()来获取字符串值