如何输出从多个输入中选取和添加值的值

时间:2018-09-22 00:52:18

标签: c# date

我需要输出以下内容:
您输入的日期是:2017年5月16日,星期一

我写道:

namespace Date
{
    class Program
    {
        enum Day { Mon, Tue, Wed, Thu, Fri, Sat, Sun }; 
        enum Month { January, February, March, April, May, June, July, August, September, October, November, December }; 

        static void Main(string[] args)
        {

            Console.Write("Enter Month in Numeric form (Example 1 for January): ");  
            Console.Write("Enter Day of the week in Numeric form (Example 1 for Monday): "); 
            Console.Write("Enter day in Numeric form (Example 15): "); 
            Console.Write("Enter year in Numeric form (Example 2018): ");  

        }
    }
}

但是我不知道如何将枚举值与输入的数字链接并打印出来。

3 个答案:

答案 0 :(得分:1)

看看C# documentation for enum types。它说明了如何为枚举类型分配整数值,该整数值可用于解决此问题。还要查看Enum.TryParse,您可以使用它来解析字符串,以查看它们是否与枚举中的任何值匹配。

答案 1 :(得分:0)

仅出于娱乐目的,而且完全是一个顶级解决方案,假设您的enums被隐式赋值,则可以使用genericsInt.TryParseEnum.IsDefined

给予

enum Day { Mon=1, Tue=2, Wed=3, Thu=4, Fri=5, Sat=6, Sun=7 };
enum Month { January=1, February=2, March=3, April=4, May=5, June=6, July=7, August=8, September=9, October=10, November=11, December=12 };


public static bool TryParse<T>(string input, out T result) where T : IConvertible
{
   // define default for worst case
   result = default(T);

   // if its not an int bail
   if (!int.TryParse(input, out var value))
      return false;

   // if its not defined in the enum bail
   if (!Enum.IsDefined(typeof(T), value))
      return false;

   // yay convert and return true
   result = (T)(object)value;
   return true;
}

用法

Month month;    
Day day;

Console.WriteLine("Enter Month in Numeric form (Example 1 for January): ");
while (!TryParse(Console.ReadLine(), out month)) 
   Console.WriteLine("OMG you had one job");

Console.WriteLine($"You entered {month}");

Console.WriteLine("Enter Day of the week in Numeric form (Example 1 for Monday): ");
while (!TryParse(Console.ReadLine(), out day))
   Console.WriteLine("OMG you had one job");

Console.WriteLine($"You entered {day}");

输出

Enter Month in Numeric form (Example 1 for January):
123
OMG you had one job
1
You entered January
Enter Day of the week in Numeric form (Example 1 for Monday):
3
You entered Wed

简而言之,您可以通过强制转换将int转换为enum

Day day = (Day)SomeIntValue;

答案 2 :(得分:0)

namespace Date
{
    class Program
    {
        enum Day { Mon, Tue, Wed, Thu, Fri, Sat, Sun };
        enum Month { January, February, March, April, May, June, July, August, September, October, November, December };

        static void Main(string[] args)
        {
            Month month;
            Day week;
            int day, year;
            do
            {
                Console.Write("Enter Month in Numeric form (Example 1 for January): ");
            } while (!Enum.TryParse(Console.ReadLine(), out month));
            do
            {
                Console.Write("Enter Day of the week in Numeric form (Example 1 for Monday): ");
            } while (!Enum.TryParse(Console.ReadLine(), out week));
            do
            {
                Console.Write("Enter day in Numeric form (Example 15): ");
            } while (!int.TryParse(Console.ReadLine(), out day));
            do
            {
                Console.Write("Enter year in Numeric form (Example 2018): ");
            } while (!int.TryParse(Console.ReadLine(), out year));

            Console.WriteLine(string.Format("The date you entered is: {3}, {0} {1}, {2}", month, day, year, week));
        }
    }
}