Симон Робинсон - C# для профессионалов. Том II
- Название:C# для профессионалов. Том II
- Автор:
- Жанр:
- Издательство:Лори
- Год:2003
- Город:Москва
- ISBN:5-85582-187-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Симон Робинсон - C# для профессионалов. Том II краткое содержание
Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Для кого предназначена эта книгаЭта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
Основные темы книги• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory
C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
// 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
. Эти операторы связаны с получением информации о типе объекта или класса.
Оператор присваивания (=)
Для простых типов данных = просто копирует данные. Однако при определении своих собственных классов C++ считает в большой степени, что обязанность разработчика указать значение =
для этих классов. По умолчанию в C++ =
требует поверхностного почленного копирования всех переменных, классов или структур. Однако программисты перезагружают этот оператор для выполнения более сложных операций присваивания.
В C# правила, определяющие, что означает оператор присваивания, значительно проще. Вообще не разрешается перезагружать =, его значение неявно определено во всех ситуациях.
Ситуация в C# будет следующая:
□ Для простых типов данных =
просто копирует значения, как в C++.
□ Для структур =
делает поверхностное копирование структуры — прямую копию памяти данных в экземпляре структуры. Это аналогично поведению в C++.
□ Для классов =
копирует ссылку, то есть адрес, а не объект. Это не соответствует поведению в C++.
Если требуется скопировать экземпляры классов, обычный способ в C# состоит в переопределении метода MemberwiseCopy()
, который все классы в C# по умолчанию наследуют из класса System.Object
— общего класса-предка, из которого неявно выводятся все классы C#.
this
Оператор this
имеет то же самое значение, что и в C++, но это скорее ссылка, а не указатель. Например, в C++ можно записать:
this->m_MyField = 10;
В C# это будет выглядеть так:
this.MyField = 10;
this
используется в C# таким же образом, как и в C++. Например, можно передавать его в качестве параметра в вызовах методов или использовать его, чтобы сделать явным доступ к полю-члену класса. В C# существует пара других ситуаций, которые синтаксически требуют использования this
, о них будет упомянуто в разделе о классах.
new
Как сообщалось ранее, оператор new
, интерпретируемый как конструктор, имеет другое значение в C#, поскольку он обеспечивает инициализацию объекта а не запрос динамического выделения памяти.
Классы и структуры
В C++ классы и структуры очень похожи. Формально единственное различие состоит в том, что члены структуры являются по умолчанию открытыми, в то время как члены класса являются по умолчанию закрытыми. На практике, однако, многие программисты предпочитают использовать структуры и классы различным образом, сохраняя использование структур для объектов данных, которые содержат только члены-переменные (другими словами, без функций членов или явных конструкторов).
C# отражает это традиционное различие использования. В C# класс — это совершенно другой тип объектов, по сравнению со структурой, поэтому нет необходимости тщательно рассматривать, будет ли лучше определить заданный объект как класс или как структуру. Наиболее важные различия между классами C# и структурами C# следующие:
□ Структуры не поддерживают наследование, кроме того факта, что они являются производными из System.ValueType
. Невозможно наследовать от структуры и структура не может наследовать от другой структуры или класса.
□ Структуры являются типами данных значений. Классы всегда являются ссылочными типами данных.
□ Структуры позволяют организовать способ размещения полей в памяти и определяют эквивалент объединений C++.
□ Конструктор структуры по умолчанию (без параметров; всегда поставляется компилятором и не может быть заменен.
Поскольку классы и структуры сильно отличаются в C#, они в этом приложении рассматриваются по отдельности.
Классы
Классы в C# следуют в основном тем же самым принципам, что и в C++, однако существует разница в свойствах и синтаксисе. Мы рассмотрим отличия между классами C++ и классами C# в этом разделе.
Определение класса
Классы определяются в C# с помощью синтаксиса, который на первый взгляд выглядит как синтаксис C++:
Читать дальшеИнтервал:
Закладка: