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

Ватсон Карли

Шрифт:

Для C++ можно сделать следующую запись:

double DoSomething(int someData, bool Condition=true) {

 // и т.д.

В то время как в C# необходимо выполнить такие действия:

double DoSomething(int someData) {

 DoSomething(someData, true);

}

double DoSomething(int someData, bool condition) {

 // и т.д.

Свойства

Свойства не имеют эквивалента в ANSI C++, хотя они были введены как расширение в Microsoft Visual C++. Свойство является методом или парой методов, которые синтаксически оформлены для представления в вызывающем коде, как будто свойство является полем. Они существуют для ситуации, когда интуитивно удобнее вызывать метод с помощью синтаксиса поля, очевидным примером будет случай закрытого поля, которое должно быта инкапсулировано с помощью оболочки из открытых методов доступа. Предположим, что класс имеет такое поле

length
типа
int
. Тогда в C++ оно инкапсулируется с помощью методов
GetLength
и
SetLength
. Необходимо будет обращаться к нему извне класса:

// MyObject является экземпляром рассматриваемого класса

MyObject.SetLength(10);

int Length = MyObject.GetLength;

В C# можно реализовать эти методы, как аксессоры (методы доступа)

get
и
set
свойства
Length
. Тогда запишем

// MyObject является экземпляром рассматриваемого класса

MyObject.Length = 10;

int length = MyObject.Length;

Чтобы определись эти методы доступа, свойство будет определяться следующим образом:

class MyClass {

 private int length;

 public int Length {

get {

return length;

}

set {

Length = value;

}

Хотя методы доступа

get
и
set
реализованы здесь, чтобы просто возвращать или задавать поле
length
, в эти методы можно поместить любой другой требуемый код C# так же, как это обычно делается в методе. Например, добавить некоторую проверку данных в метод доступа
set
. Отметим, что метод доступа
set
возвращает
void
и получает дополнительный неявный параметр с именем
value
.

Можно опустить любой из методов доступе

get
или
set
из определения свойства, и в этом случае свойство осуществляет соответственно либо только запись, либо только чтение.

Операторы

Значение и синтаксис операторов в большинстве случаев те же в C#, что и в C++. Следующие операторы по умолчанию имеют в C# такое же значение и синтаксис как и в C++:

□ Бинарные арифметические операторы

+
,
–
,
*
,
/
,
%

□ Соответствующие арифметические операторы присваивания

+=
,
– =
,
*=
,
/=
,
%=

□ Унарные операторы

++
и
– -
(обе — префиксная и постфиксная формы)

□ Операторы сравнения

!=
,
==
,
<
,
<=
,
>=

□ Операторы сдвига

>>
и
<<

□ Логические операторы

&
,
|
,
&&
,
||
,
~
,
^
,
!

□ Операторы присваивания, соответствующие логическим операторам:

>>=
,
<<=
,
&=
,
|=
,
^=

□ Тернарный (условный) оператор

Символы

,
[]
, и
,
(запятая) также имеют в общих чертах такой же эффект в C#, как и в C++.

Необходимо быть осторожным со следующими операторами, так как они действуют в C# иначе, чем в C++:

□ Присваивание (

=
),
new
,
this
.

Оператор разрешения области видимости в C# представлен

.
, а не
::
(
::
не имеет смысла в C#). Также в C# не существуют операторы
delete
и
delete[]
. Они не нужны, так как сборщик мусора автоматически управляет очисткой памяти в куче. Однако C# предоставляет также три других оператора, которые не существуют в C++, а именно,
is
,
as
и
typeof
. Эти операторы связаны с получением информации о типе объекта или класса.

  • Читать дальше
  • 1
  • ...
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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