Читает следующий символ из стандартного потока ввода.
ReadLine
Читает следующую строку символов из
Console.In
, который по умолчанию задается как стандартный поток ввода системы.
SetError
Перенаправляет свойство
Error
для использования указанного потока
TextWriter
.
SetIn
Перенаправляет свойство
In
для использования указанного потока
TextReader
.
SetOut
Перенаправляет свойство
Out
для использования указанного потока
TextWriter
.
Write
Перезагруженный. Записывает указанную информацию в
Console.Out
.
WriteLine
Перезагруженный. Записывает информацию, за которой следует конец строки в
Console.Out
.
Как можно видеть, все члены
Console
являются статическими.
static
является примером модификатора C#. Он обладает тем же значением, что и его аналог в Java, т.е. делает указанную переменную или метод принадлежащим всему классу, а не одному какому-то экземпляру класса. Мы обсудим модификаторы более подробно позже в этом приложении.
С помощью мощных методов из класса
Console
можно записать эквивалент класса
JavaEcho
на C# следующим образом:
class CSEchoer {
static void Main(string[] args) {
string userInput = System.Console.ReadLine;
System.Console.WriteLine("You said : " + userInput);
}
}
Приведенный выше код значительно короче и легче, чем его аналог на Java. Статический метод
Console.WriteLine
предоставляет одну полезную вещь, а именно, возможность использовать форматированные строки. Гибкость форматированных строк может быть проиллюстрирована написанием простой игры, где ввод пользователя применяется для создания рассказа. Код
EchoGame
представлен ниже:
class EchoGame {
static void Main(string[] args) {
System.Console.WriteLine("Once upon a time in a far away" + "?");
string userInput1 = System.Console.ReadLine;
System.Console.WriteLine("a young prince ?");
string userInput2 = System.Console.ReadLine;
System.Console.WriteLine("One day while?");
string userInput3 ? System.Console.ReadLine;
System.Console.WriteLine("He came across a ?");
string userInput4 = System.ConsoleReadLine;
System.Console.WriteLine("The prince ?");
String userInput5 = System.Console.ReadLine;
System.Console.WriteLine("Once upon a time in a far away"
+ " {0}, a young prince {1}. \n One day"
+ "while {2}, He came across a (3). \n The "
+ "prince {4} ! ", userInput1, userInput2,
userInput3, userInput4, userInput5);
}
}
Точки вставки заменяются предоставленными аргументами, начиная с индекса
{0}
, который соответствует самой левой переменной (в данном случае
userInput1
). Можно подставлять не только строковые переменные, и не обязательно использовать только переменные или переменные одного типа. Любой тип данных, который может вывести метод
WriteLine
, допустим в качестве аргумента, включая строковые литералы или реальные
значения. Не существует также ограничений на число точек вставки, которые могут добавляться к строке, пока их не больше общего числа аргументов. Отметим, что исключение точек вставки из строки приведет к тому, что переменные не будут выводиться. Необходимо, однако, иметь аргумент для каждой определенной точки вставки, индекс которой в списке аргументов соответствует индексу точки вставки. В следующем листинге, например, удаление
{1}
допустимо, пока имеется три аргумента. В этом случае
При описании некоторых различий между JRE Java и CLR C# кратко упоминались некоторые детали того, как написанный на соответствующем языке код компилируется и выполняется. Хотя код обоих языков компилируется в некоторую промежуточную форму, байт-код версии Java никогда не компилируется повторно в собственные инструкции машины (если только не используется компилятор в собственный код). Вместо этого байт-код требует для выполнения среду времени выполнения, и в частности, виртуальную машину. Имя компилированного файла связано с именем файла, в котором находится исходный код, который в свою очередь связан с именем открытого класса в этом файле. В случае определения нескольких классов в одном файле каждое определение класса будет создавать файл класса, который соответствует имени определенного класса. Например, возьмем исходный файл
Test.java
со следующим кодом:
// Test.java
class x {}
class у {}
class z {}
Компиляция этого файла будет создавать три файла классов:
х.class
,
у.class
,
z.class
. Один (и только один для каждого исходного файла) из этих классов может быть объявлен открытым следующим образом:
// Test.java
public class x {}
class у {}
class z {}
В приведенном выше примере имя исходного файла
Test.java
должно быть изменено, чтобы соответствовать имени находящегося в нем открытого класса.
Test.java
поэтому станет
х.java
, чтобы код компилировался.
В противоположность этому, компилированный в IL код C# выполняется VES (Virtual Execution System), которая предоставляет поддержку для IL, загружая управляемый код, и JITters (которые преобразуют управляемый код в форме промежуточного языка в собственный код машины). Имя файла
Hello.cs
не связано с именем конечного исполняемого файла и может изменяться во время компиляции с помощью ключа
/out
. Если имя файла вывода не определено, то exe получит имя того файла исходного кода, который содержит метод
main
, a DLL получит имя первого указанного файла исходного кода. Фактически имя файла даже не связано с определениями любых классов, находящихся в файле. Класс
Hello
может быть определен в файле
Goodbу.cs
, который компилируется в несвязанный
MisterHanky.exe
.
SDK .NET поставляется вместе с компилятором, поэтому не нужно беспокоиться о получении специальных компиляторов для этого приложения. Откройте просто командную строку, перейдите в каталог, где сохранен файл
hello.cs
, и введите:
csc hello.cs
Файл будет компилирован в
hello.exe
. Хотя большинство программистов Java знакомы с этой формой низкоуровневой компиляции, важно заметить, что Visual Studio.NET предоставляет аналогичную функциональность, интегрированную в IDE. Например, изменение имени исполнимого файла можно легко выполнить, добавляя свойство имени сборки страницы свойств проекта. Чтобы сделать это производим щелчок правой кнопкой мыши на имени проекта в панели Solution Explorer и выбираем Properties или указываем Project в меню, в то время, когда имя проекта выделено, и выбираем пункт меню Properties. В папке Common Properties можно выбрать страницу General Properties и изменить свойство Assembly Name. Можно будет увидеть, что свойство для чтения Output File изменяется, отражая новое имя сборки.
Типы компиляции
Все файлы Java компилируются в файл байт-кода с расширением
.class
, который может выполниться виртуальной машиной. Внутри первого исходного кода необходимо предоставить соответствующую. Функциональность для создания того или иного типа приложения. Например, определенный ниже код будет создавать окно, аналогичное
Form
в Windows. Второй исходный файл
AddLib.java
является вспомогательным классом, используемым для выполнения сложения двух целых чисел. Можно заметить, что они включены в отдельные пакеты и
JavaFrame
импортирует класс
AddLib
. Пакеты и их эквивалент C# будут рассмотрены в следующем разделе: