Герберт Шилдт - C# 4.0: полное руководство
- Название:C# 4.0: полное руководство
- Автор:
- Жанр:
- Издательство:ООО И.Д. Вильямс
- Год:2011
- Город:Москва -- Киев
- ISBN:978-5-8459-1684-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Герберт Шилдт - C# 4.0: полное руководство краткое содержание
В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.
Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию
C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
// Простой пример обобщенного итератора,
using System;
using System.Collections.Generic;
class MyClass {
T[] array;
public MyClass(T[] a) {
array = a;
}
// Этот итератор возвращает символы из массива chrs.
public IEnumerator GetEnumerator() {
foreach (T obj in array)
yield return obj;
}
}
class GenericItrDemo {
static void Main() {
int[] nums = { 4, 3, 6, 4, 7, 9 };
MyClass mc = new MyClass(nums);
foreach (int x in mc)
Console.Write(x + " ");
Console.WriteLine();
bool[] bVals = { true, true, false, true };
MyClass mc2 = new MyClass(bVals);
foreach (bool b in mc2)
Console.Write(b + " ");
Console.WriteLine();
}
}
Вот к какому результату приводит выполнение этой программы.
4 3 6 4 7 9
True True False True
В данном примере массив, состоящий из возвращаемых по очереди объектов, передается конструктору класса MyClass
. Тип этого массива указывает в качестве аргумента типа в конструкторе класса MyClass
.
Метод GetEnumerator()
оперирует данными обобщенного типа Т и возвращает перечислитель типа IEnumerator
. Следовательно, итератор, определенный в классе MyClass, способен перечислять данные любого типа.
Инициализаторы коллекций
В С# имеется специальное средство, называемое инициализатором коллекции и упрощающее инициализацию некоторых коллекций. Вместо того чтобы явно вызывать метод Add()
, при создании коллекции можно указать список инициализаторов. После этого компилятор организует автоматические вызовы метода Add()
, используя значения из этого списка. Синтаксис в данном случае ничем не отличается от инициализации массива. Обратимся к следующему примеру, в котором создается коллекция типа List
, инициализируемая символами С, А, Е, В, D и F.
List lst = new List() { 'С', 'А', 'Е', 'В', 'D', 'F' };
После выполнения этого оператора значение свойства lst.Count
будет равно 6, поскольку именно таково число инициализаторов. А после выполнения следующего цикла foreach
:
foreach(ch in lst)
Console.Write(ch + " ");
получится такой результат:
С A E В D F
Для инициализации коллекции типа LinkedList
, в которой хранятся пары "ключ-значение", инициализаторы приходится предоставлять парами, как показано ниже.
SortedListcint, string> lst =
new SortedList()
{ {1, "один"}, {2, "два" }, {3, "три"} };
Компилятор передаст каждую группу значений в качестве аргументов методу Add()
. Следовательно, первая пара инициализаторов преобразуется компилятором в вызов Add(1, "один")
.
Компилятор вызывает метод Add()
автоматически для ввода инициализаторов в коллекцию, и поэтому инициализаторы коллекций можно использовать только в коллекциях, поддерживающих открытую реализацию метода Add()
. Это означает, что инициализаторы коллекций нельзя использовать в коллекциях типа Stack
, Stack
, Queue
или Queue
, поскольку в них метод Add()
не поддерживается. Их нельзя применять также в тех коллекциях типа LinkedList
, где метод Add()
предоставляется как результат явной реализации соответствующего интерфейса.
ГЛАВА 26 Сетевые средства подключения к Интернету
Язык C# предназначен для программирования в современной вычислительной среде, где Интернету, естественно, принадлежит весьма важная роль. Одной из главных целей разработки C# было внедрение в этот язык программирования средств, необходимых для доступа к Интернету. Такой доступ можно было осуществить и в предыдущих версиях языков программирования, включая С и C++, но поддержка операций на стороне сервера, загрузка файлов и получение сетевых ресурсов в этих языках не вполне отвечали потребностям большинства программистов. Эта ситуация коренным образом изменилась в С#. Используя стандартные средства C# и среды .NET Framework, можно довольно легко сделать приложения совместимыми с Интернетом и написать другие виды программ, ориентированных на подключение к Интернету.
Поддержка сетевого подключения осуществляется через несколько пространств имен, определенных в среде .NET Framework, и главным среди них является пространство имен System.Net
. В нем определяется целый ряд высокоуровневых, но простых в использовании классов, поддерживающих различные виды операций, характерных для работы с Интернетом. Для этих целей доступен также ряд пространств, вложенных в пространство имен System.Net
. Например, средства низкоуровневого сетевого управления через сокеты находятся в пространстве имен System.Net.Sockets
, поддержка электронной почты — в пространстве имен System.Net.Mail
, а поддержка защищенных сетевых потоков — в пространстве имен System.Net.Security
. Дополнительные функциональные возможности предоставляются в ряде других вложенных пространств имен. К числу других не менее важных пространств имен, связанных с сетевым подключением к Интернету, относится пространство System.Web
. Это и вложенные в него пространства имен поддерживают сетевые приложения на основе технологии ASP.NET.
В среде .NET Framework имеется достаточно гибких средств и возможностей для сетевого подключения к Интернету. Тем не менее для разработки многих приложений более предпочтительными оказываются функциональные возможности, доступные в пространстве имен System.Net
. Они и удобны, и просты в использовании. Именно поэтому пространству имен System.Net
будет уделено основное внимание в этой главе.
Члены пространства имен System.Net
Пространство имен System.Net довольно обширно и состоит из многих членов. Полное их описание и обсуждение всех аспектов программирования для Интернета выходит далеко за рамки этой главы. (На самом деле для подробного рассмотрения всех вопросов, связанных с сетевым подключением к Интернету и его поддержкой в С#, потребуется отдельная книга.) Однако целесообразно хотя бы перечислить члены пространства имен System. Net, чтобы дать какое-то представление о том, что именно доступно для использования в этом пространстве.
Ниже перечислены классы, определенные в пространстве имен System.Net.
AuthenticationManager
Authorization
Cookie
CookieCollection
CookieContainer
CookieException
CredentialCache
Dns
DnsEndPoint
Интервал:
Закладка: