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
определяет, что он возвращает целое значение.
Идентификаторы
Ключевые слова, рассматриваемые в следующем разделе, не могут служить идентификаторами ни в Java, ни в C#, однако в C# можно использовать ключевые слова как идентификаторы, помещая перед ними символ @
. Отметим, что это исключение имеет отношение только к ключевым словам и не нарушает другие правила. Оба языка являются зависимы ми от регистра символов, поэтому идентификаторы должны иметь согласованное использование заглавных букв. Хотя идентификаторы могут содержать буквы и цифры, первый символ идентификатора как в C#, так и в Java не должен быть цифрой. Java не допускает никаких символов кроме $
, а C# вообще не допускает никаких символов:
int 7х; // неверно, цифра не может начинать идентификатор
int х7; // верно, цифра может быть частью идентификатора
int х; // верно
int х$; // неверно, никакие символы недопустимы
int @7k; // неверно, @ работает только для ключевых слов
int @class; // верно, @ перед ключевым словом позволяет использовать
// его в качестве идентификатора
Стандарты именования
Одним из основных различий, которое может быть не очевидно на первый взгляд, и которое не связано специально с языком C#, является синтаксис записи идентификаторов. Java практикует обозначения типа camel
, означающее, что методы и идентификаторы используют меленькую букву для первой буквы имени и заглавную букву для первой буквы любого другого слова в имени. Общий синтаксис, которому следуют большинство программистов в Java, представлен ниже:
int id;
int idName;
int id_name; // также используется
final int CONSTANT_NAME; // широко распространен
int reallyLongId;
public class ClassName; // каждая первая буква заглавная
public interface _InterfaceName; // с предшествующим подчеркиванием
public void method(){}
public void methodName(){}
public void longMethodName(){}
public void reallyLongMethodName(){}
На основе библиотеки классов, предоставленной компанией Microsoft для C#, можно сделать некоторые предположения о стандартах наименований в C#. Документированные рекомендации по именованию для C# не были представлены в то время когда писалась эта книга. Каждая первая буква идентифицирующих имен всех методов и свойств будет заглавной, так же как и каждая первая буква имен