KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Симон Робинсон - C# для профессионалов. Том II

Симон Робинсон - C# для профессионалов. Том II

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Симон Робинсон, "C# для профессионалов. Том II" бесплатно, без регистрации.
Перейти на страницу:

Аналогично в 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# не были представлены в то время когда писалась эта книга. Каждая первая буква идентифицирующих имен всех методов и свойств будет заглавной, так же как и каждая первая буква имен всех классов и пространств имен (рассматриваемых позже). Интерфейсы используют в качестве первого символа I. Некоторые примеры приведены ниже:

int id;

int idName;


public class ClassName // каждая первая буква заглавная

public interface IInterfaceName // имени интерфейса предшествует I


public void Method(){} // первая буква всегда заглавная

public void MethodName(){} // первая буква всех других слов

                           // будет заглавная

public void LongMethodName(){}

public void ReallуLongMetodName(){}

Ключевые слова

Как известно, ключевое слово является специальным зарезервированным словом языка. Мы уже встречали некоторые из них допустим, объявление переменной как целого числа с помощью int. Другими примерами ключевых слов являются public, class, static и void в листингах кода в этом приложении.

Ключевые слова можно разделить на ряд категорий в связи с их назначением. В этом разделе мы выделим и определим каждую категорию, а также идентифицируем ключевые слова. Реальные ключевые слова будут идентифицироваться своими версиями в Java, чтобы можно было легко их находить. Затем будет дан эквивалент C# (если существует). Для тех ключевых слов, которые присутствуют только в Java, будет предоставлено лучшее соответствие. Ключевые слова, представленные в C#, но не в Java, будут даны в своей собственной категории с лучшим приблизительным эквивалентом в Java (если такой существует).

Простейшие ключевые слова: byte, char, short, int, long, float, double и boolean

Примитивные типы данных в обоих языках ссылаются на низкоуровневые типы значений языка. Конечно, диапазон значений указанных типов может различаться в том или другом языке. Логические значения в C# идентифицируются ключевым словом bool в противоположность boolean в Java. Ниже представлен табличный список типов данных Java и их аналогов в C#:

Тип Java Описание Эквивалентный тип C# Описание byte 8-битовое со знаком sbyte 8-битовое со знаком short 16-битовое со знаком short 16-битовое со знаком int 32-битовое со знаком int 32-битовое со знаком long 64-битовое со знаком long 64-битовое со знаком float 32-битовое число с плавающей точкой со знаком float 32-битовое число с плавающей точкой со знаком double 64-битовое число с плавающей точкой со знаком double 64-битовое число с плавающей точкой со знаком boolean true/false bool true/false char 2-байтовый Unicode char 2-байтовый Unicode

Существует также ряд типов, поддерживаемых C#, которые Java не использует. Таблица ниже выделяет эти типы данных.

Уникальный тип данных C# Описание Byte 8-битовое целое без знака ushort 16-битовое целое без знака Uint 32-битовое целое без знака ulong 64-битовое целое без знака decimal 128-битовое Ключевые слова-переменные: this, void и super

Эти ключевые слова сами являются переменными. Оба языка, Java и C#, имеют по три ключевых слова, которые попадают в эту категорию. Ключевые слова this и void обладают в обоих языках одинаковой функциональностью.

super — эта ссылочная переменная используется для указания класса-предка. В C# эквивалентом является base. Возьмем класс Power, который предоставляет возможность найти степень заданного числа и степень, в которую требуется возвести (при условии, что не происходит переполнение):

public class SuperEX {

 int power;

 public SuperEX(int power) {

  this.power = power;

 }

 public int aMethod(int x) {

  int total = 1;

  for (int i = 0; i < power; i++) {

   total *= x;

  }

  return total;

 }

 public static void main(String args[]) {

  SuperEX x = new SuperEX(Integer.parseInt(args[0]));

  int tot = x.aMethod(Integer.parseInt(args[1]));

  System.out.println(tot);

 }

}

Класс-потомок этого класса сможет получить доступ к методу aMethod с помощью вызова super.aMethod(<int value>), к переменной power — с помощью вызова super.power = <int value>, и даже к конструктору — с помощью вызова super(<int value>), где <int value> может быть любым целым литералом, переменной или константой.

Аналогично в C# класс-потомок этого класса сможет получить доступ к методу aMethod с помощью вызова super.aMethod(<int value>) и к переменной power — с помощью вызова super.power = <int value>. Сделать вызов базового конструктора тоже возможно, синтаксис, однако, будет отличаться. Пример ниже является эквивалентом в C# для SuperEX:

namespace SuperEX {

 using System;

 public class SuperEX {

  internal int power;

  public SuperEX(int power) {

   this.power = power;

  }

  public int aMethod(int x) {

   int total = 1;

   for (int i = 0; i < power; i++) {

    total *= x;

   }

   return total;

  }

  public static void Main(String [] args) {

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*