1

我想继续阅读用户的台词,但是当这个用户按下转义键时,我希望它停止。但是我怎样才能在阅读行的同时继续阅读单个键(用于转义)?我希望在给出我的代码后问题会更清楚:

int number;
do
{
      string a = Console.ReadLine();
      try
      {
          Int32.TryParse(a, out number);
      }
      catch
      {
          Console.WriteLine("I only accept int");
      }
      finally
      {
          Console.Writeline(number);
      }
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
4

2 回答 2

2

正如您所写的,您想读取行,直到按下转义键,但正如您的代码所说,您只想读取整数。这就是我认为你想要的,

        int number = 0;
        do
        {
            while (!Console.KeyAvailable)
            {
                string a = Console.ReadLine();
                bool bWriteNumber = false;
                try
                {
                    number = int.Parse(a);
                    bWriteNumber = true;
                }
                catch
                {
                    Console.WriteLine("Sorry! I only accept int");
                }
                finally
                {
                    if (bWriteNumber)
                        Console.WriteLine(number);
                }
            }
        } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
于 2015-06-29T09:29:19.790 回答
1

我不确定是否完全理解您的问题,但如果它符合您的要求,您可以测试下面的代码

using System;
using System.Globalization;

namespace StackOverflow_31111668
{
    class Program
    {
        static void Main()
        {
            while (Console.ReadKey(true).Key != ConsoleKey.Escape)
            {
                var a = Console.ReadLine();
                int number;
                Console.WriteLine(!int.TryParse(a, out number) ? "I only accept int" : number.ToString(CultureInfo.InvariantCulture));
            }
        }
    }
}
于 2015-06-29T09:17:23.617 回答