Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

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

Присваивание значений переменным в 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";

  • Читать дальше
  • 1
  • ...
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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