Чтение онлайн

на главную - закладки

Жанры

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

Ватсон Карли

Шрифт:
Никаких суффиксов в C#

VB позволяет присоединять суффиксы к переменным, чтобы указать их тип данных:

$
для
String
,
%
для
Int
,
&
для
Long
.

Dim Message$ ' будет string

Такой синтаксис не поддерживается в C#. Имена переменных могут содержать только буквы, цифры и символ подчеркивания, и необходимо всегда явно указывать тип данных.

Никаких значений по умолчанию для локальных переменных

В

примере кода VB переменной
NumberInput
по умолчанию будет присвоено значение 0 после ее объявления. Это на самом деле ненужная фата процессорного времени, так как этой переменной немедленно в следующей инструкции присваивается новое значение. C# немного больше знает о производительности и не беспокоится о задании каких-либо значений по умолчанию для локальных переменных при их объявлении. Вместо этого он требует, чтобы такие переменные всегда инициализировались в коде программы до их использования. Компилятор C# будет инициировать ошибку компиляции, если попытаться прочитать значение локальной переменной прежде, чем она будет задана.

Присваивание значений переменным

Присваивание значений переменным в C# делается с помощью такого же синтаксиса, как и в VB. После имени переменной помещается знак

=
, за которым следует присваиваемое значение. Однако необходимо отметить, что это единый синтаксис, принятый в C#. В некоторых случаях в VB используется
Let
, в то время как для объектов в VB всегда используется ключевое слово
Set
:

Set MyListBox = new ListBox;

C# не использует отдельный синтаксис для присваивания объектных ссылок. Эквивалент в C# для вышеприведенного будет следующим:

MyListBox = new ListBox;

Помните, что в C# значения переменным всегда присваиваются с помощью синтаксиса

<ИмяПеременной>=<Выражение>
.

Классы 

Теперь рассмотрим, что происходит в выражении, используемом для инициализации переменной

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#.

Инструкции If

Мы переходим к основной части обработчика событий — инструкции

if
. Вспомните, что версия VB выглядит следующим образом:

If (NumberInput < 0) Then

 Me.txtSign.Texgt = "Negative"

 Me.txtResult.Text = CStr(Sqr(-NumberInput)) & " i"

ElseIf (NumberInput = 0) Then

 txtSign.Text = "Zero"

 txtResult.Text = "0"

Else

 Me.txtSign.Text = "Positive"

 Me.txtResult.Text = CStr(Sqr(NumberInput))

EndIf

в то время как версия C# записывается так:

if (NumberInput < 0) {

 this.txtSign.Text = "Negative";

 this.txtResult.Text = Math.Sqrt(-NumberInput).ToString + " i";

} else if (NumberInput == 0) {

 txtSign.Text = "Zero";

 txtResult.Text = "0";

Поделиться:
Популярные книги

Толян и его команда

Иванов Дмитрий
6. Девяностые
Фантастика:
попаданцы
альтернативная история
7.17
рейтинг книги
Толян и его команда

Кодекс Крови. Книга IХ

Борзых М.
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ

Кодекс Охотника. Книга XV

Винокуров Юрий
15. Кодекс Охотника
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XV

Мастер Разума II

Кронос Александр
2. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.75
рейтинг книги
Мастер Разума II

Идеальный мир для Социопата 4

Сапфир Олег
4. Социопат
Фантастика:
боевая фантастика
6.82
рейтинг книги
Идеальный мир для Социопата 4

Проклятый Лекарь V

Скабер Артемий
5. Каратель
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Проклятый Лекарь V

Live-rpg. эволюция-5

Кронос Александр
5. Эволюция. Live-RPG
Фантастика:
боевая фантастика
5.69
рейтинг книги
Live-rpg. эволюция-5

Сонный лекарь 6

Голд Джон
6. Сонный лекарь
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Сонный лекарь 6

Сумеречный стрелок

Карелин Сергей Витальевич
1. Сумеречный стрелок
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок

Мимик нового Мира 8

Северный Лис
7. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 8

Титан империи 4

Артемов Александр Александрович
4. Титан Империи
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Титан империи 4

Бездомыш. Предземье

Рымин Андрей Олегович
3. К Вершине
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Бездомыш. Предземье

Возвышение Меркурия. Книга 16

Кронос Александр
16. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 16

Генерал Скала и сиротка

Суббота Светлана
1. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.40
рейтинг книги
Генерал Скала и сиротка