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

Здесь есть возможность читать онлайн «Симон Робинсон - C# для профессионалов. Том II» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2003, ISBN: 2003, Издательство: Лори, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

C# для профессионалов. Том II: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «C# для профессионалов. Том II»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

C# для профессионалов
Для кого предназначена эта книга
Основные темы книги Платформа .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 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «C# для профессионалов. Том II», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

static CMyClass operator+(const CMyClass &lhs, const CMyClass &rhs) {

CMyClass Result;

Result.x = lhs.x + rhs.x;

return Result;

}

Отметим, что оба параметра объявлены как constи передаются по ссылке, чтобы обеспечить оптимальную производительность. Это само по себе не слишком плохо. Однако теперь для возвращения результата, необходимо создать временный экземпляр CMyClassвнутри перезагруженной версии оператора. Конечная инструкция return Resultвыглядит безопасной, но она будет компилироваться только в том случае, если доступен оператор присваивания для копирования Resultиз функции.

Это само по себе является нетривиальной задачей, так как если ссылки используются неправильно при определении, то очень легко случайно определить ссылку, которая рекурсивно вызывает себя, пока не будет получено переполнение стека. Перезагрузка операторов в C++ является задачей для опытных программистов. Нетрудно видеть, почему компания Microsoft решила сделать некоторые операторы неперезагружаемыми в C#.

В C# практика будет другой. Здесь нет необходимости явно передавать по ссылке, так как классы C# являются ссылочными переменными в любом случае (а для структур передача по ссылке снижает производительность). И возвращение значения является легкой задачей. Будет ли это класс или структура, надо просто вернуть значение временного результата, а компилятор C# гарантирует, что в результате будут скопированы либо поля-члены (для типов данных значений), либо адреса (для ссылочных типов). Единственный недостаток заключается в том, что нельзя использовать ключевое слово const, чтобы получить дополнительную проверку компилятора, которая определяет, изменяет или нет перезагруженная версия оператора параметры класса. Также C# не предоставляет улучшения производительности подставляемых функций, как происходит в C++.

static MyClass operator+(MyClass lhs, CMyClass rhs) {

MyClassResult = new MyClass();

Result.x = lhs.x + rhs.x;

return Result;

}

Индексаторы

C# cтрого не разрешает перезагружать []. Однако он позволяет определить так называемые индексаторы (indexer) класса, что обеспечивает такой же результат.

Синтаксис определении индексатора очень похож на синтаксис свойства. Предположим, что необходимо использовать экземпляры MyClassкак массив, где каждый элемент индексируется с помощью intи возвращает long. Тогда можно сделать следующую запись:

class MyClass {

public long this[int x] {

get {

// код для получения элемента

}

set {

// код для задания элемента, например X = value;

}

}

// и т.д.

Код внутри блока getвыполняется всякий раз, когда Mine[x]стоит с правой стороны выражения (при условии, что выражение Mineявляется экземпляром MyClassи xбудет int), в то время как блокset выполняется только тогда, когда Mine[x]указывается с левой стороны выражения. Блок setничего не может вернуть и использует ключевое слово valueдля указания величины, которая появится с правой стороны выражения. Блок getдолжен вернуть тот же тип данных, который имеет индексатор.

Можно перезагружать индексаторы, чтобы использовать любой тип данных в квадратных скобках или любое число аргументов, тем самым создавая эффект многомерного массива.

Определенные пользователем преобразования типов данных

Так же как для индексаторов и [], C# формально не рассматривает ()как оператор, который может перезагружаться, однако C# допускает определяемые пользователем преобразования типов данных, которые имеют тот же результат. Например, предположим, что имеются два класса (или структуры) с именами MySourceи MyDestи необходимо определить преобразование типа из MySourceв MyDest. Синтаксис этого выглядит следующим образом:

public static implicite operator MyDest(MySource Source) {

// код для выполнения преобразования. Должен возвращать экземпляр MyDest

}

Преобразование типа данных определяется как статический член класса MyDestили класса MySource. Оно должно также объявляться любо как implicit, либо как explicit. Если преобразование объявлено как implicit, то оно используется неявно:

MySource Source = new MySource();

MyDest Dest = MySource;

Если преобразование объявлено как explicit, то оно может использоваться только явным образом:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «C# для профессионалов. Том II»

Представляем Вашему вниманию похожие книги на «C# для профессионалов. Том II» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «C# для профессионалов. Том II»

Обсуждение, отзывы о книге «C# для профессионалов. Том II» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x