Книга: 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
определяет, что он возвращает целое значение.
- ГЛАВА 1 Основы построения баз данных
- Глава 1 Основы графологии
- Часть I Основы Ubuntu
- 2.10. Основы конфигурирования
- Нейрофизиологические основы различия «нравится» и «хочу»
- Основы интерфейса Access 2007
- 7.7.1. Основы безопасности
- 13.1. Основы резервного копирования
- 14.1. Основы безопасности
- Урок 1.4. Программа Блокнот. Основы работы с текстом
- Глава 1 Коммуникационные основы PR
- Глава 1. Основы современного корпоративного налогообложения