无法将类型'string'隐式转换为'char'

时间:2017-09-24 21:51:50

标签: c#

为什么user = Console.ReadLine();总是出错?

这里是错误:

  • 无法将类型'string'隐式转换为'char'
  • 语法错误,'('期望
  • 语法错误,'while'prepected
  • )预期
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication5
{
    class Program
{
    static void Main(string[] args)
    {
        char user;
        do
        {
             Console.Clear();

             Console.WriteLine("Discount Code");
             Console.WriteLine("1. Student = 10%");
             Console.WriteLine("2. Senior  = 15%");
             Console.WriteLine("3. Regular = 0%");

             Console.Write("Please input discount code: ");
             int DiscountCode = int.Parse(Console.ReadLine());
             fare fares = new fare();
             fares.setDiscountCode(DiscountCode);
             Console.WriteLine();
             Console.Write("Please input distance(KM):");
             double Distance = double.Parse(Console.ReadLine());
             fares.setDistance(Distance);
             fares.getDistance();
             fares.totalFare();

         }
        user = Console.ReadLine(); // error
        while (user == 'y');

         Console.ReadKey();
    }
} 
}

2 个答案:

答案 0 :(得分:0)

Console.ReadLine()返回string而不是char。如果您只想阅读单char,则可以使用Console.ReadKey。尝试使用以下内容替换出错的行:

 user = Console.ReadKey().KeyChar;

答案 1 :(得分:-2)

C#'y'中的单引号代表char,而双引号"y"代表stringConsole.ReadLine()返回一个字符串,因此它永远不会等于while语句中的char。

更改为string user;

while (user == "y")

此外,while必须紧跟do循环。 (谢谢@Aren)