2015-05-31 3 views
-4

Я кодирую BufferedReader в Unity3D с C# файлом. Когда я использую эту строку кода, она говорит, что есть ошибка: «Ошибка Parser: Идентификатор ожидаемого», в «это ключевое слово», но когда этот код запущен в Java, ошибки нет. Почему System.in не существует в C# и как его исправить?System.in для C#?

Мой код:

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); 
+1

Это похоже на java, а не на C# ... –

+1

В C# это 'System.Console.In'. Также существует метод ['Console.OpenStandardInput'] (https://msdn.microsoft.com/en-us/library/tx55zca2%28v=vs.110%29.aspx); не уверен, хотя, если это связано с тем, что вы пытаетесь сделать. –

+1

В C# эквивалент 'Console.In', но не существует' BufferedReader' или 'InputStreamReader'. C# и Java - разные языки. Я не уверен, почему вы ожидаете, что код из одного будет компилироваться в другом. –

ответ

2

System.in является частью стандартной библиотеки Java, это не является частью стандартной библиотеки .NET и, следовательно, не будет компилироваться.

Для C# вы должны использовать Console.In. Это TextReader. В C# нет реального эквивалента BufferedReader (который поддерживает все вызовы). Но у TextReader есть Read и ReadLine метод, который, кажется, ведет себя более или менее одинаково. Таким образом, вы должны заменить его:

TextReader tr = Console.In; 
//use TextReader as inFromUser 

Как говорит @BlasSoriano, это question стремится найти поведенческий эквивалент BufferedReader.

Кроме того, как @KenWhite говорит, просто скопируйте вставку исходного кода, не понимая, что основная идея - очень плохая идея. Тот факт, что вы считаете, что этот код является допустимым кодом C#, не очень перспективен.

+0

Процитированный код не является C# код (C# не имеет «BufferedReader»). Поэтому изменение кода на использование 'Console.In' ничего не исправит; вы не можете притворяться, что код Java - это код C#. Вопрос размещен просто на основе неправильного представления о том, что Java-файл является кодом C#. Ваш ответ на самом деле не является релевантным (или правильным). –

+0

@KenWhite: ну это ошибка. Я думаю, что OP просто скопировал код из другого места. Этот ответ дает (приблизительную) альтернативу в C#. Я не притворяюсь, что это код C#. Я говорю, что это (приблизительный) эквивалент. –

+0

(Чтобы быть ясным, я не отрицаю этот ответ). Ошибка заключается в том, что плакат совершил ужасную ошибку, пытаясь скомпилировать код на неправильном языке. Простое исправление этой единственной строки кода не устраняет или не исправляет основную проблему, которая заключается в том, что плакат не понимает код, который они копируют/вставляют достаточно хорошо, чтобы знать, что это неправильный язык. –