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

Классы 

Классы 

Теперь рассмотрим, что происходит в выражении, используемом для инициализации переменной NumberInput в примере SquareRoot. В C# и VB делается практически одно и то же: извлекается текст из текстового поля txtNumber. Но синтаксис этого выглядит по-разному в двух этих языках:

NumberInput = CSng(Me.txtNumber.Text)

и

float NumberInput = float.Parse(this.txtNumber.Text);

Получение значения из текстового поля достаточно похоже в обоих случаях. Единственное различие для этой части процесса является чисто синтаксическим — VB использует ключевое слово Me, в то время как C# применяет ключевое слово this, которое имеет точно такое же значение (фактически, в C# можно его при желании опустить, так же как можно опустить Me в VB). В C# можно было в равной степени написать:

float NumberInput = float.Parse(txtNumber.Text);

Более интересной частью является то, как строка, извлеченная из текстового поля, преобразуется во float (или single), потому что это иллюстрирует фундаментальное свойство языка C#, о котором кратко упоминалось ранее:

В C# все является частью класса.

В VB для преобразования используется функция CSng. Однако C# не имеет функций в том виде, как в VB. C# является полностью объектно-ориентированным и разрешает объявлять только те методы, которые являются частью класса.

В C# преобразование из строки в число с плавающей точкой выполняется методом Parse(). Однако, так как Parse() является частью класса, ему должно предшествовать имя класса. Класс, на котором необходимо вызвать метод Parse(), будет классом float. До сих пор float интерпретировался просто как эквивалент C# для Single из VB. Но на самом деле он также является классом. В C# все типы данных тоже являются классами, и значит, такие вещи как int, float и string имеют методы и свойства, которые можно вызывать (хотя необходимо отметить, что int и float являются специальными типами класса, известного в C# как структуры. Различие для этого кода не важно, но оно будет объяснено позже.)

Если внимательно посмотреть на приведенный выше код, можно отметить незначительную проблему с аналогией, касающейся модулей класса VB. В методы вызываются определением имени переменной, а не имени модуля класса, но Parse вызван с помощью определения имени класса float, а не имени переменной. Parse() в действительности является специальным типом метода, называемого статическим (static) методом. Статический метод можно вызывать, не создавая экземпляр класса. Следовательно здесь определяется имя класса float, а не имя переменной. static имеет в C# значение, отличное от того, которое он имеет в VB. В C# нет эквивалента статическим переменным VB — в них нет необходимости в объектах C#, так как с этой целью будут использоваться поля C#.

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

Похожие страницы

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