Книга: C# для профессионалов. Том II

Основы

Одно из основных различий между C# и Java лежит не в самом языке, а в платформе, поверх которой они реализованы. Программам Java требуется для выполнения кода рабочая среда времени выполнения Java Runtime Environment. C# и, на самом деле, вся платформа .NET выполняются в среде Common Language Runtime.

Большинство свойств CLR, внутреннее управление памятью, согласованность среды, масштабируемость и независимость от базовой платформы отражены в JRE Java. В то время, как JRE ограничена исключительно одним языком Java, CLR предоставляет поддержку и интеграцию нескольких языков с помощью VOS (virtual object system — система виртуальных объектов), которая предоставляет богатую типами систему, предназначенную для реализации множества различных типов языков программирования. Исходный код Java можно компилировать в промежуточное состояние, называемое байт-кодом. Он может затем выполняться с помощью поставляемой виртуальной машины. CLR, наоборот, не предоставляет виртуальную машину. Код C# также компилируется в промежуточное состояние, называемое для удобства промежуточным языком (IL, Intermediate Language). Но код IL передается в управляемые CLR процессы выполнения или компиляторам JIT CLR, обычно называемым JITters, которые преобразуют по требованию разделы IL в собственный код.

Давайте рассмотрим известный пример "Hello, World!" на Java (который будет показан здесь без затенения): 

public class Hello {
 public static void main(String args[]) {
  System.out.println("Hello world! This is Java Code!");
 }
}

Соответствующий код C# для этого примера следующий (представлен на сером фоне):

public class Hello {
 public static void Main(string[] args) {
  System.Console.WriteLine("Hello world! This is C# code!");
 }
}

Прежде всего можно заметить, что эти два кода очень похожи, по большей части различия незначительны (такие, как использование заглавных букв в string и Main и использование System.Console.WriteLine вместо System.out.println). Он является, с другой стороны, по-прежнему зависимым от регистра символов.

Необходимо отметить тип string, который в C# также может записываться с заглавной S — как String. Следовательно, приведенный выше код можно записать в следующем виде:

public class Hello {
 public static void Main(String [] args) {
  System.Console.WriteLine("Hello world! This is C# code!");
 }
}

Можно заметить, что спецификатор ранга массива [] перемещен из позиции перед переменной args в примере Java в положение между типом string и переменной args в примере C#. В C# спецификатор ранга массива должен появляться перед именем переменной, так как массив является на самом деле типом данных, что указывается с помощью []:

// C#
int [] X; // массив целых чисел в C#
// пример java
int [] х; // массив целых чисел в java
int x[]; // массив целых чисел в java

Тот же самый код C# можно также представить следующим образом:

using System;
class Hello {
 public static int Main() {
  Console.WriteLine ("Hello world! This is C# code!");
  return 0;
 }
}

Как можно видеть, изменилось несколько элементов. Объявление string [] args в сигнатуре метода является в C# необязательным (хотя скобки должны стоять перед именем параметра), как и использование public при объявлении метода. Ключевое слово using аналогично по смыслу ключевому слову include в Java, и так как System является используемым по умолчанию включением в C#, первая строка позволяет нам опустить System, которое находилось перед Console.WriteLine. Поскольку мы используем в этом примере int вместо void, необходимо включить строку return 0;.

Блоки кода C# заключаются в фигурные кавычки, также как в Java. Можно сказать, что метод Main() является частью класса, так как он заключен в фигурные кавычки. Точкой входа в приложении C# является метод static Main, как требует компилятор. Необходимо отметить, что Java использует main() в нижнем регистре. Подчеркнем также, что только один класс в приложении может иметь Main. Модификатор доступа public (обсуждаемый позднее) объявляет метод доступным потребителям кода вне класса, пакета или приложения, и также, как и компилятор, требует сделать метод видимым.

Аналогично в Java ключевое слове static позволяет вызывать метод сначала без создания экземпляра класса. Для метода Main() можно выбрать в качестве возвращаемого типа значения void или int. void определяет, что метод не возвращает значение, a int определяет, что он возвращает целое значение.

Оглавление книги


Генерация: 0.229. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз