2013-09-08 5 views
-2

Я создаю ОС в космосе (C#), но я не могу получить код правильно. Вот оно:Ошибка при создании ОС в космосе

var input = Console.ReadLine(); 
if (input = 'h') 
    Console.Write("This is the help section..."); 
else 
    Console.Write("Invalid Command."); 
Console.WriteLine(input); 

То, что я хочу, чтобы это сделать, что, когда я типа в «H» он должен вывести раздел справки, и когда я печатаю в чем-то другом, он должен ввести в «Invalid Command».

Он продолжает говорить «Ошибка: не может неявно преобразовать тип« char »в« string ».

Полный код

using System; 
using System.Collections.Generic; 
using System.Text; 
using Sys = Cosmos.System; 

namespace Dingo_OS 
{ 
    public class Kernel : Sys.Kernel 
    { 
     protected override void BeforeRun() 
     { 
     Console.WriteLine("Thank you for trying out my OS. For any help, input /h."); 
     } 

     protected override void Run() 
     { 
      var input = Console.ReadLine(); 
      if (input = 'h') 
       Console.Write("This is the help section..."); 
      else 
       Console.Write("Invalid Command."); 
      Console.WriteLine(input); 
     } 
    } 
} 
+2

Вы пишете «ОС» и у вас возникли проблемы с этим фрагмент кода? Возможно, попробуйте «откусить» что-то немного меньше ... –

ответ

1

Console.ReadLine возвращает строку, а не один символ. Поэтому вам нужно сравнить его со строкой. Строковые литералы используют двойные кавычки, а не одинарные кавычки. Кроме того, вы хотите, чтобы оператор сравнения равенства (==), а не оператор присваивания (=):

if (input == "h") 

Чтобы быть честным, если вы достаточно неопытными в C#, что это причиняет вам проблемы, я предлагаю вам шаг назад и сначала изучить основы C# в более «нормальной» среде (например, консоли или клиентских приложениях), прежде чем отправиться в Космос. Я сам не делал никаких работ Cosmos, но у меня есть подозреваемых. Там будут довольно сложные хитроумные области, которые будут сделаны намного сложнее, не имея твердого заземления на C# в первую очередь.

+0

Кроме того, ему не хватает одного знака равенства. В выражении if есть = вместо ==. –

+0

@OndrejJanacek: Да, я отредактировал это для этого. –

+0

Исправьте меня, если я ошибаюсь, но лучше ли сравнивать строку с == вместо .Equals ??? –

0

Console.ReadLine возвращает string не char, вы можете использовать Console.ReadKey().KeyChar для чтения char

protected override void Run() 
{ 
    var input = Console.ReadKey().KeyChar; 
    if (input == 'h') 
     Console.Write("This is the help section..."); 
    else 
     Console.Write("Invalid Command."); 
    Console.WriteLine(input); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^