Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

Как можно видеть, все члены

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}
допустимо, пока имеется три аргумента. В этом случае
{0}
соответствует
strA
и
{2}
соответствует
strC
:

Console.WriteLine("hello {0} {1} {2}", strA, strB, strC);

Компиляция

При описании некоторых различий между 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
.

  • Читать дальше
  • 1
  • ...
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: