Главная страница

программирование. Руководство su P# a n Reference в herbert schildt полное руководство с 0 герберт шилдт


Скачать 3.32 Mb.
НазваниеРуководство su P# a n Reference в herbert schildt полное руководство с 0 герберт шилдт
Анкорпрограммирование
Дата25.01.2022
Размер3.32 Mb.
Формат файлаrtf
Имя файлаc-40-polnoe-rukovodstvo-2011.rtf
ТипРуководство
#341448
страница95 из 97
1   ...   89   90   91   92   93   94   95   96   97

Далее программа осуществляет поиск ссылки в полученном содержимом. Для этого вызывается статический метод FindLink () , определяемый в программе MiniCrawler. Этот метод вызывается со строкой содержимого и исходным положением, с которого начинается поиск в полученном содержимом. Эти значения передаются методу FindLink () в виде параметров htmlstr и startloc соответственно. Обратите внимание на то, что параметр startloc относится к типу ref. Сначала в методе FindLink () создается копия строки содержимого в нижнем регистре, а затем осуществляется поиск подстроки href="http, обозначающей ссылку. Если эта подстрока найдена, то URI копируется в строковую переменную uri, а значение параметра startloc обновляется и становится равным концу ссылки. Но поскольку параметр startloc относится к типу ref, то это приводит к обновлению соответствующего аргумента метода Main (), активизируя поиск с того места, где он был прерван. В конечном итоге возвращается значение переменной uri. Эта переменная инициализирована пустым значением, и поэтому если ссылка не найдена, то возвращается пустая ссылка, обозначающая неудачный исход поиска.

Если ссылка, возвращаемая методом FindLink (), не является пустой, то она отображается в методе Main () , и далее программа запрашивает у пользователя очередные действия. Пользователю предоставляются одна из трех следующих возможностей: перейти по найденной ссылке, нажав клавишу <П>, искать следующую ссылку в имеющемся содержимом, нажав клавишу <И>, или же выйти из программы, нажав клавишу <В>. Если пользователь нажмет клавишу <П>, то программа осуществит переход по найденной ссылке и получит новое содержимое по этой ссылке. После этого поиск очередной ссылки будет начат уже в новом содержимом. Этот процесс продолжается до тех пор, пока не будут исчерпаны все возможные ссылки.

В качестве упражнения вы сами можете усовершенствовать программу MiniCrawler, дополнив ее, например, возможностью перехода по относительным ссылкам. Сделать это не так уж и трудно. Кроме того, вы можете полностью автоматизировать поисковый робот, чтобы он сам переходил по найденной ссылке без вмешательства со стороны пользователя, начиная со ссылки, обнаруженной на самой первой странице полученного содержимого, и продолжая переход по ссылкам на новых страницах. Как только будет достигнут тупик, поисковый робот должен вернуться на один уровень назад, найти следующую ссылку и продолжить переход по ссылке. Для организации именно такого алгоритма работы программы вам потребуется стек, в котором должны храниться идентификаторы URI и текущее состояние поиска в строке URL С этой целью можно, в частности, воспользоваться коллекцией класса Stack. В качестве более сложной, но интересной задачи попробуйте организовать вывод ссылок в виде дерева.

Применение класса WebClient

В заключение этой главы уместно рассмотреть класс WebClient. Как упоминалось в самом ее начале, класс WebClient рекомендуется использовать вместо классов WebRequest и WebResponse в том случае, если в приложении требуется лишь выгружать или загружать данные из Интернета. Преимущество класса WebClient заключается в том, что он автоматически выполняет многие операции, освобождая от их программирования вручную.

В классе WebClient определяется единственный конструктор.

public WebClient()

Кроме того, в классе WebClient определяются свойства, сведенные в табл. 26.6, а также целый ряд методов, поддерживающих как синхронную, так и асинхронную передачу данных. Но поскольку рассмотрение асинхронной передачи данных выходит за рамки этой главы, то в табл. 26.7 приведены только те методы, которые поддерживают синхронную передачу данных. Все методы класса WebClient генерируют исключение WebException, если во время передачи данных возникает ошибка.

Таблица 26.6. Свойства, определенные в классе WebClient
Свойство
Описание
public string BaseAddress { get; set; }

public RequestCachePolicy CachePolicy { get; set; } public ICredentials Credentials { get; set; }

public Encoding Encoding { get; set; }
Получает или устанавливает базовый адрес требуемого URI. Если это свойство установлено, то адреса, задаваемые в методах класса WebClient, должны определяться относительно этого базового адреса Получает или устанавливает правила, определяющие, когда именно используется кэш1 Получает или устанавливает мандат, т.е. учетные данные пользователя. По умолчанию это свойство имеет пустое значение

Получает или устанавливает схему кодирования символов при передаче строк
Свойство
Описание
public WebHeaderCollection Headers! get; set; } public bool IsBusy( get; }

public IWebProxy Proxy { get; set; }

,public NameValueCollection QueryString { get; set; }

public WebHeaderCollection ResponseHeaders { get; } public bool

UseDefaultCredentials { get; set; }
Получает или устанавливает коллекцию заголовков запроса

Принимает логическое значение true, если данные по‑прежнему передаются по запросу, а иначе – логическое значение false Получает или устанавливает прокси‑сервер

Получает или устанавливает строку запроса, состоящую из пар “имя‑значение”, которые могут быть присоединены к запросу. Строка запроса отделяется от URI символом ?. Если же таких пар несколько, то каждая из них отделяется символом 0 Получает коллекцию заголовков ответа

Получает или устанавливает значение, которое определяет, используется ли для аутентификации устанавливаемый по умолчанию мандат. Если принимает логическое значение true, то используется мандат, устанавливаемый по умолчанию, т.е. учетные данные пользователя, в противном случае этот мандат не используется
Таблица 26.7. Методы синхронной передачи, определенные в классе WebClient
Метод
Определение
public byte[]
Загружает информацию по адресу UR1, обозначае
DownloadData(string address)
мому параметром address. Возвращает результат в виде массива байтов
public byte[]
Загружает информацию по адресу URI, обозначае
DownloadData(Uri address)
мому параметром address. Возвращает результат в виде массива байтов
public void
Загружает информацию по адресу URI, обозначае
DownloadFile(string uri,
мому параметром fileName. Сохраняет результат
string fileName)
в файле fileName
public void DownloadFile(Uri
Загружает информацию по адресу URI, обозначае
address, string fileName)
мому параметром address. Сохраняет результат в файле fileName
public string
Загружает информацию по адресу URI, обозначае
DownloadString(string
мому параметром address. Возвращает результат
address)
в виде символьной строки типа string
public string
Загружает информацию по адресу URI, обозначае
DownloadString(Uri address)
мому параметром address. Возвращает результат в виде символьной строки типа string
public Stream
Возвращает поток ввода для чтения информации по
OpenRead(string address)
адресу URI, обозначаемому параметром address. По окончании чтения информации этот поток необходимо закрыть
Метод
Определение
public Stream OpenRead(Uri
Возвращает поток ввода для чтения информации по
address)
адресу URI, обозначаемому параметром address. По окончании чтения информации этот поток необходимо закрыть
public Stream
Возвращает поток вывода для записи информа
OpenWrite(string address)
ции по адресу URI, обозначаемому параметром address. По окончании записи информации этот поток необходимо закрыть
public Stream OpenWrite(Uri
Возвращает поток вывода для записи информа
address)
ции по адресу URI, обозначаемому параметром address. По окончании записи информации этот поток необходимо закрыть
public Stream
Возвращает поток вывода для записи информа
OpenWrite(string address,
ции по адресу URI, обозначаемому параметром
string method)
address. По окончании записи информации этот
поток необходимо закрыть. В строке, передаваемой в качестве параметра method , указывается, как именно следует записывать информацию
public Stream OpenWrite(Uri
Возвращает поток вывода для записи информа
address, string method)
ции по адресу URI, обозначаемому параметром address. По окончании записи информации этот поток необходимо закрыть. В строке, передаваемой в качестве параметра method , указывается, как именно следует записывать информацию
public byte[]
Записывает информацию из массива data по
UploadData(string address,
адресу URI, обозначаемому параметром address.
byte[] data)
В итоге возвращается ответ
public byte[] UploadData(Uri
Записывает информацию из массива data по
address, byte[] data)
адресу URI, 'обозначаемому параметром address. В итоге возвращается ответ
public byte[]
Записывает информацию из массива data по
UploadData(string address,
адресу URI, обозначаемому параметром address.
string method, byte[] data)
В итоге возвращается ответ. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
public byte[] UploadData(Uri
Записывает информацию из массива data по
address, string method,
адресу URI, обозначаемому параметром address.
byte[] data)
В итоге возвращается ответ. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
public byte[]
Записывает информацию в файл fileName по
UploadFile(string address,
адресу URI, обозначаемому параметром address.
string fileName)
В итоге возвращается ответ
public byte[] UploadFile(Uri
Записывает информацию в файл fileName по
address, string fileName)
адресу URI, обозначаемому параметром address. В итоге возвращается ответ
Окончание табл. 26.7
Метод
Определение
public byte[]
Записывает информацию в файл fileName по
UploadFile (‑string address,
адресу UR1, обозначаемому параметром address.
string method , string
В итоге возвращается ответ. В строке, передавае
fileName)
мой в качестве параметра method , указывается, как именно следует записывать информацию
public byte[] UploadFile(Uri
Записывает информацию в файл fileName по
address , string method ,
адресу URI, обозначаемому параметром address.
string fileName)
В итоге возвращается ответ. В строке, передаваемой в качестве параметра method , указывается, как именно следует записывать информацию
public string
Записывает строку data по адресу URI, обозначае
UploadString(string address,
мому параметром address. В итоге возвращается
string data)
ответ
public string
Записывает строку data по адресу URI, обозначае
UploadString(Uri address,
мому параметром address. В итоге возвращается
string data)
ответ
public string
Записывает строку data по адресу URI, обозначае
UploadString(string address,
мому параметром address. В итоге возвращается
string method , string data)
ответ. В строке, передаваемой в качестве параметра method , указывается, как именно следует записывать информацию
public string
Записывает строку data по адресу URI, обозначае
UploadString(Uri address,
мому параметром address. В итоге возвращается
string method , string data)
ответ. В строке, передаваемой в качестве параметра method , указывается, как именно следует записывать информацию
public byte[]
Записывает значения из коллекции data по адресу
UploadValues(string address,
URI, обозначаемому параметром address. В итоге
NameValueCollection data)
возвращается ответ
public byte[]
Записывает значения из коллекции data по адресу
UploadValues(Uri address,
URI, обозначаемому параметром address. В итоге
NameValueCollection data)
возвращается ответ
public byte[]
Записывает значения из коллекции data по адресу
UploadValues(string
URI, обозначаемому параметром address. В итоге
address , string method,
возвращается ответ. В строке, передаваемой в ка
NameValueCollection data)
честве параметра method , указывается, как именно следует записывать информацию
public byte[]
Записывает значения из коллекции data по адресу
UploadValues(Uri
URI, обозначаемому параметром address. В итоге
address, string method,
возвращается ответ. В строке, передаваемой в ка
NameValueCollection data)
честве параметра method , указывается, как именно следует записывать информацию
В приведенном ниже примере программы демонстрируется применение класса WebClient для загрузки данных в файл по указанному сетевому адресу.

// Использовать класс WebClient для загрузки данных // в файл по указанному сетевому адресу.

using System; using System.Net; using System.10;

class WebClientDemo { static void Main() {

WebClient user = new WebClient(); string uri = " http://www.McGraw‑Hill.com "; string fname = "data.txt";

try {

Console.WriteLine("Загрузка данных по адресу " + uri + " в файл " + fname); user.DownloadFile(uri, fname);

} catch (WebException exc) {

Console.WriteLine(exc);

}

Console.WriteLine("Загрузка завершена.");

}

}

Эта программа загружает информацию по адресу www .McGrawHill. com и помещает ее в файл data. txt. Обратите внимание на строки кода этой программы, в которых осуществляется загрузка информации. Изменив символьную строку uri, можно загрузить информацию по любому адресу URI, включая и конкретные файлы, доступные по указываемому URL

Несмотря на то что классы WebRequest и WebResponse предоставляют больше возможностей для управления и доступа к более обширной информации, для многих приложений оказывается достаточно и средств класса WebClient. Этим классом особенно удобно пользоваться в тех случаях, когда требуется только загрузка информации из веб‑ресурса. Так, с помощью средств класса WebClient можно получить из Интернета обновленную документацию на приложение.

ПРИЛОЖЕНИЕ Краткий справочник по составлению документирующих комментариев

В языке C# предусмотрено три вида комментариев. К двум первым относятся комментарии // и /* */, а третий основан на дескрипторах языка XML и называется документирующим комментарием. (Иногда его еще называют XML‑комментарием.) Однострочный документирующий комментарий начинается с символов III, а многострочный начинается с символов / * * и оканчивается символами */. Строки после символов /** могут начинаться с одного символа *, хотя это и не обязательно. Если все последующие строки многострочного комментария начинаются с символа *, то этот символ игнорируется.

Документирующие комментарии вводятся перед объявлением таких элементов языка С#, как классы, пространства имен, методы, свойства и события. С помощью документирующих комментариев можно вводить в исходный текст программы сведения о самой программе. При компиляции программы документирующие комментарии к ней могут быть помещены в отдельный XML‑файл. Кроме того, документирующие комментарии можно использовать в средстве IntelliSense интегрированной среды разработки Visual Studio.
Дескрипторы XML‑комментариев

В С# поддерживаются дескрипторы документации в формате XML, сведенные в табл. 1. Большинство дескрипторов XML‑комментариев не требует особых пояснений

и действуют подобно всем остальным дескрипторам XML, знакомым многим программистам. Тем не менее дескриптор – сложнее других. Он состоит из двух частей: заголовка и элементов списка. Ниже приведена общая форма дескриптора

:



имя

. текст



где текст описывает имя. Для описания таблиц текст не используется. Ниже приведена общая форма элемента списка:



имя_элемента

текст



где текст описывает имя_элемента. Для описания маркированных и нумерованных списков, а также таблиц имя элемента не используется. Допускается применение нескольких элементов списка .

Таблица 1. Дескрипторы XML‑комментариев
Дескриптор
Описание
<с> код
Определяет текст, на который указывает код, как программный код
код
Определяет несколько строк текста, на который указывает код, как программный код
пояснение
Определяет текст, на который указывает пояснение, как описание примера кода

Описывает исключительную ситуацию, на ко
пояснение

торую указывает имя
Определяет файл, содержащий XML‑kom‑
'path[0tagName = "tagID 11 ] ' />
ментарии для текущего исходного файла. При
этом fname обозначает имя файла; path – путь к файлу; tagName – имя дескриптора; tagID – идентификатор дескриптора
заголовок
Определяет список. При.этом тип обозначает
списка элементы списка

тип списка, который может быть маркированным, нумерованным или таблицей
<рага> текст

Определяет абзац текста в другом дескрипторе


Документирует параметр, на который указы
пояснение

вает имя параметра. Текст, обозначаемый как пояснение, описывает параметр


Обозначает имя параметра как имя конкретного параметра


Описывает параметр разрешения, связанный с
пояснение

членами класса, на которые указывает идентификатор. Текст, обозначаемый как пояснение, описывает параметры разрешения
Дескриптор
Описание
пояснение
Текст, обозначаемый как пояснение, представляет собой общие комментарии, которые часто используются для описания класса или структуры
пояснение
Текст, обозначаемый как пояснение, описывает значение, возвращаемое методом

Объявляет ссылку на другой элемент, обозначаемый как идентификатор

Объявляет ссылку типа “см. также" на идентификатор
пояснение

Текст, обозначаемый как пояснение, представляет собой общие комментарии, которые часто используются для описания метода или другого члена класса
Обозначает имя параметра как имя пара
метра" />
метра типа
Компилирование документирующих комментариев

Для получения XML‑файла, содержащего документирующие комментарии, достаточно указать параметр /doc в командной строке компилятора. Например, для компилирования файла DocTest. cs, содержащего XML‑комментарии, в командной строке необходимо ввести следующее.

csc DocTest.cs /doc:DocTest.xml

Для вывода результата в XML‑файл из интегрированной среды разработки Visual Studio необходимо активизировать окно Свойства (Properties) для текущего проекта. Затем следует выбрать свойство Построение (Build), установить флажок XML‑файл документации (XML Documentation File) и указать имя выходного XML‑файла.

Пример составления документации в формате XML

В приведенном ниже примере демонстрируется применение нескольких документирующих комментариев: как однострочных, так и многострочных. Любопытно, что многие программисты пользуются последовательным рядом однострочных документирующих комментариев вместо многострочных, даже если комментарий занимает насколько строк. Такой подход применяется и в ряде комментариев из данного примера. Его преимущество заключается в том, что он позволяет ясно обозначить каждую строку как часть длинного документирующего комментария. Но это все же, скорее, дело стиля, чем общепринятая практика составления документирующих комментариев.

// Пример составления документирующих комментариев, using System;

/**

Это пример многострочного документирования в формате XML.

В классе Test демонстрируется ряд дескрипторов.



*/

class Test {

III

III Выполнение программы начинается с метода Main().

Ill
static void Main() { int sum;

sum = Summation(5) ;

Console.WriteLine("Сумма последовательных чисел " +

5 + " равна " + sum);

}

III

III Метод Summation() возвращает сумму его аргументов.

Ill


III Суммируемое значение передается в качестве параметра val.

Ill


III

III

III Сумма возвращается в виде значения типа int.

Ill

III


static int Summation(int val) { int result = 0;

for(int i=l; i <= val; i++) result += i;

return result;

}

}

Если текст приведенной выше программы содержится в файле Xml Test. cs, то по следующей команде будет скомпилирована программа и получен файл Xml Test. xml, содержащий комментарии к ней.

csc XmlTest.cs /doc:XmlTest.xml

После компилирования получается XML‑файл, содержимое которого приведено ниже.







DocTest





cmember name=ffT:Testff>



Это пример многострочного документирования в формате XML. В классе Test демонстрируется ряд дескрипторов.









Выполнение программы начинается с метода Main().








Метод Summation() возвращает сумму его аргументов.




Суммируемое значение передается в качестве параметра val.






Сумма возвращается в виде значения типа int.











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

Предметный указатель

А

Аксессоры вызов 304

модификаторы доступа ограничения 323 применение 320 назначение 304 разновидности 304 событий 500 Анонимные функции назначение 483 преимущество 483 разновидности 483 Аргументы именованные назначение 252 применение 252 командной строки 255 метода 162 назначение 52 необязательные назначение 247 и неоднозначность 250 и перегрузка методов 249 порядок объявления 249 способы передачи методу 220 типа 579 Атрибуты AttributeUsage 570 Conditional 571

MethodlmplAttribute, применение 860

Obsolete 572

встроенные 570

извлечение 564

именованные параметры 566

назначение 562

позиционные параметры 566

присоединение 564

создание 563

указание 563

Б

Байт‑код 34 Библиотека TPL возврат значения из задачи 899 задачи, создание и исполнение 887 идентификаторы задач, назначение и применение 890 классы

Parallel, назначение и применение 906 TaskFactory, назначение и применение 895 Task, назначение и применение 887 лямбда‑выражения, в качестве задачи, применение 896 методы

Dispose(), назначение и применение 895 ForEach(), назначение и применение 915 ForQ, назначение и применение 909 Invoke(), назначение и применение 906 ожидания, назначение и применение 892 назначение 886 особенности 885 отмена задачи 901 признак отмены 901 продолжение задачи, создание 897 Библиотеки классов С#. 727

для среды .NET Framework 66 организация 727 пространство имен System члены 729

структуры встроенных типов данных 727 Буферы фиксированного размера назначение 693 создание 694

В

Ввод‑вывод в файл байтовый 441 символьный 449 последовательный 462 с произвольным доступом 462 данных в массив 463 двоичных данных 436,454 консольный 436 основанный на потоках 432 отдельными байтами 432 отдельными символами 432 переадресация 453 с запоминанием 465 Виртуальная машина Java 34 Возможность взаимодействия;

межъязыковая 35 Выводимость типов 609 Вызов

перегружаемого конструктора 245

по значению 220 по ссылке 220

Г

Групповая адресация, определение 478

А

Делегаты Action формы 769 применение 769 вызов

методов экземпляра 477 любых методов 474 главное преимущество 474 групповая адресация 478 ковариантность 481 контравариантность 481 назначение 483 обобщенные EventHandler, применение 508 вариантные 633 объявление 610 общая форма объявления 474 определение 473 применение 474

типа EventHandler, применение 508 Деструкторы, назначение и применение 172 Десятичная система счисления 80 Динамическая диспетчеризация методов, принцип 356 идентификация типов назначение 537 причины полезности 537 Директивы #define 529 #else и #elif 531 #error 533 #if и #endif 529 #line 534 #pragma 534 #region и #endregion 534 #undef 533 #warning 534 using 518

препроцессора 528 Доступ к Интернету сооЫе‑наборы 1027 заголовки протокола HTTP 1026 обработка исключений 1022 сетевых ошибок 1021

организация 1018 передача данных асинхронная 1015 синхронная 1015 получение дополнительной информации 1025 по принципу запроса и ответа 1014 пространство имен System.Net, члены 1012 протоколы определение 1013 подключаемые 1014 разработка поискового робота 1030 сетевой ресурс, последнее обновление 1029 универсальный идентификатор ресурса, определение 1013

И

Идентификаторы URI 1013

директив препроцессора 529 назначение 65 применение 65 Иерархии классов многоуровневые 347 обобщенных 620

порядок вызова конструкторов 350 простые 346

ссылки на объекты разных классов 351 Импликация 103 Индексаторы аксессоры get и set 304 без базового массива 310 интерфейсные 385 многомерные 311 назначение 303 . ограничения на применение 311 одномерные 304 перегружаемые 307 преимущество 304 Индекс массива, назначение 178 Инициализаторы коллекций 2009 массивов 180 объектов 246, 319 проекции 666 Инкапсуляция как механизм программирования 42 классы и объекты 43 открытые и закрытые данные и код 42 Интегрированная среда разработки Visual Studio 44, 46 Интернет, определение 34

Интерфейсы ICloneable, реализация 779 IComparable и IComparable, реализация 627, 778, 990‑993 Icomparer и IComparer, реализация 994‑996 Iconvertible, реализация 779 IEnumerable, реализация 2002 IEnumerator, реализация 1001 IEquatable, реализация 626, 778 IFormatProvider, реализация 781 IFormattable, реализация 781 IObservable и IObserver, реализация и применение 781 индексаторы реализация 385 общая форма объявления 385 коллекций 924 наследование 387 обобщенные контравариантность, применение 630 объявление 622

ковариантность, применение 626 применение 622 определение и реализация 375 порядок и форма реализации 377 правило выбора 391 свойства реализация 383 общая форма объявления 383 стандартные для среды .NET Framework 391 форма объявления 376 явная реализация 388 Исключения базового класса, перехват 426 блоки try/catch, применение 404 блок finally, применение 426 вложение блоков try 413 внутренние 420 генерирование вручную 414 и перехват 405 повторное 415 классы 404

обработчики 403    ,

оператор throw, применение 414 последствия неперехвата 408 при вводе‑выводе 433, 442    *

производных классов, перехват 426 разнотипные, обработка 411 сетевые, при доступе к Интернету 2022 специальные, создание и применение 422 стандартные 403, 420 удаление после обработки 411 универсальный перехват и обработка 412 Исключительные ситуации обработка назначение 403 главное преимущество 403 для устранения программных ошибок 410 ключевые слова try и catch 404 организация обработки 404 подсистема обработки в C# 404 появление 403 Итераторы именованные применение 2007 создание 2006 назначение 925 несколько операторов yield, применение 2006 обобщенные, создание 1008 определение 2003 прерывание 2005 применение 2003

к

Классы Array назначение 750 методы 750 свойства 750 Assembly, члены 555 Attribute, назначение 563 BinaryReader методы 456 конструктор 455

BinaryWriter методы 455 конструктор 454 BitConverter назначение 772 методы 772 Console методы 437

переадресация потоков, методы 453 Constructorlnfo, члены 552 Cookie, свойства 1028 CookieCollection, члены 1028 CookieContainer, члены 1028 Exception методы 418 конструкторы 420 свойства 418 File

назначение 467 методы 467

FileStream методы 444,446 конструкторы 441 средства копирования файлов 448 GC

назначение 774 методы 774 свойство 776 HttpWebRequest, назначение 1018 HttpWebResponse назначение 1018 свойства 1025 Interlocked назначение 873 методы 873 Math назначение 721 методы 721 поля 721 Memberlnfo методы 542 свойства 542 MemoryStream конструктор 463 применение 463 Methodlnfo, члены 544 Monitor назначение 855

методы управления синхронизацией 855 Mutex методы 863 конструкторы 863 object назначение 368

как универсальный тип данных 372 методы 368, 776 конструктор 777 Parameterlnfo, члены 544 Process назначение 883 методы 883 Random    ,

назначение 773 методы 773 конструкторы 773 Semaphore методы 868 конструкторы 867 Stream назначение 433 методы 433 свойства 433 StreamReader конструкторы 451, 452

свойство EndOfStream 452 применение 451 StreamWriter конструкторы 449, 450 применение 449 String назначение 784 реализация интерфейсов 784 методы расширения 812 форматирования строк 816 конструкторы 784 перегружаемые операторы 786 поле, индексатор и свойство 785 StringComparer свойства 766 применение 997 StringReader конструктор 465 применение 465 StringWriter конструктор 465 применение 465 System.Delegate, члены 483 Thread назначение 835

методы управления потоками 835 конструкторы 836 свойства IsBackground 846 Priority 847 Tuple, назначение 777 Type назначение 542 методы 542 свойства 543 Uri

назначение 1024 конструкторы 1024 свойства 1024 WebClient назначение 1034 методы 1034 конструктор 1034 свойства 1034 WebRequest назначение 1015 методы 1015 свойства 1015 WebResponse назначение 1017 методы 1017 свойства 1017

абстрактные реализация 364 объявление 364 правило выбора 391 атрибутов члены 563 объявление 563 базовые 329

инициализация объектов 246 исключений 404 как ссылочные типы 154 коллекций назначение 925 необобщенных 931 обобщенных 960 параллельных 983 конструкторы 167 назначение 147 наследование 331 обобщенные частичные 701 базовые 620 иерархии 620

общая форма объявления 585 определение 578 переопределение виртуальных методов 623 с несколькими параметрами типа 583 применение 579

получение экземпляров объектов 636 производные 622 оболочки символьных потоков TextReader, методы ввода 434 TextWriter, методы вывода 435 общая форма определения 148 объекты как экземпляры класса 147 оператор‑точка 150 определение 43 порядок определения 149 потоков назначение 432 байтовых 434 двоичных 436 символьных 436 специальные 434 производные 329

синхронизации, старые и новые 874 статические ,266 суперклассы и подклассы 335 функции‑члены 148 члены данных 148

доступ при наследовании 333

методы и другие функции‑члены 43 защищенные 336 закрытый и открытый доступ 212 открытые и закрытые 209 управление доступом 209 статические 264

поля и переменные экземпляра 43 Ключевые слова base 339,343,344 checked и unchecked общие формы 428 применение 428 const и volatile 710 delegate 474,484 enum 397 event 494 extern 712 fixed 693 interface 376 lock 708,850 new 343, 415
1   ...   89   90   91   92   93   94   95   96   97


написать администратору сайта