-->

Полное руководство. С# 4.0

На нашем литературном портале можно бесплатно читать книгу Полное руководство. С# 4.0, Шилдт Герберт-- . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Полное руководство. С# 4.0
Название: Полное руководство. С# 4.0
Дата добавления: 16 январь 2020
Количество просмотров: 273
Читать онлайн

Полное руководство. С# 4.0 читать книгу онлайн

Полное руководство. С# 4.0 - читать бесплатно онлайн , автор Шилдт Герберт

В этом полном руководстве по C# 4.0 — языку программирования, разработанному специально для среды .NET, — детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.

В данной книге вы найдете:- Полное описание средств языка C#- Подробное рассмотрение новых средств в версии C# 4.0, в том числе PLINQ, библиотеку TPL, именованные и необязательные аргументы, динамический тип данных и многое другое- Сотни простых и понятных примеров программ с комментариями.- Самый полный источник информации по C#Благодаря поддержке параллельного языка интегрированных запросов (PLINQ) и библиотеки распараллеливания задач (TPL) версия 4.0 стала новой вехой в программировании на C#, и поэтому Герберт Шилдт, автор лучших книг по программированию, обновил и расширил свое классическое руководство, чтобы охватить в нем эти и другие нововведения. В книге подробно описываются языковые средства C#, даются профессиональные рекомендации и приводятся сотни примеров программ, охватывающих все аспекты программирования на C#, включая синтаксис, ключевые слова и основные библиотеки, не говоря уже о таких новшествах, как PLINQ, TPL, динамический тип данных, а также именованные и необязательные аргументы.Это необходимое каждому программирующему на C# справочное руководство написано простым и доступным языком, благодаря которому Герберт Шилдт стал таким популярным. В книге найдут ответы на насущные вопросы по C# как начинающие, так и опытные программисты.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Перейти на страницу:

где тип обозначает получаемый тип. Информация, описывающая тип, инкапсулируется в возвращаемом объекте класса Туре.

Получив объект класса Туре для заданного типа, можно извлечь информациюо нем, используя различные свойства, поля и методы, определенные в классе Туре.Класс Туре довольно обширен и содержит немало членов, поэтому его рассмотрениепридется отложить до следующего раздела, посвященного рефлексии. Но в качествекраткого введения в этот класс ниже приведена программа, в которой используютсятри его свойства: FullName, IsClass и IsAbstract. Для получения полного именитипа служит свойство FullName. Свойство IsClass возвращает логическое значениеtrue, если тип относится к классу. А свойство IsAbstract возвращает логическое значение true, если класс является абстрактным.// Продемонстрировать применение оператора typeof.using System;using System.IO;class UseTypeof { static void Main() { Type t = typeof(StreamReader); Console.WriteLine(t.FullName); if(t.IsClass) Console.WriteLine("Относится к классу."); if(t.IsAbstract) Console.WriteLine("Является абстрактным классом."); else Console.WriteLine("Является конкретным классом."); }}

Эта программа дает следующий результат.System.IO.StreamReaderОтносится к классу.Является конкретным классом.

В данной программе сначала извлекается объект класса Туре, описывающий типStreamReader. Затем выводится полное имя этого типа данных и определяется егопринадлежность к классу, а далее — к абстрактному или конкретному классу.Рефлексия

Рефлексия — это средство, позволяющее получать сведения о типе данных. Терминрефлексия, или отражение, происходит от принципа действия этого средства: объекткласса Туре отражает базовый тип, который он представляет. Для получения информации о типе данных объекту класса Туре делаются запросы, а он возвращает (отражает) обратно информацию, связанную с определяемым типом. Рефлексия являетсяэффективным механизмом, поскольку она позволяет выявлять и использовать возможности типов данных, известные только во время выполнения.

Многие классы, поддерживающие рефлексию, входят в состав прикладного интерфейса .NET Reflection API, относящегося к пространству имен System.Reflection.Поэтому для применения рефлексии в код программы обычно вводится следующаястрока.using System.Reflection;Класс System.Type - ядро подсистемы рефлексии

Класс System.Туре составляет ядро подсистемы рефлексии, поскольку он инкапсулирует тип данных. Он содержит многие свойства и методы, которыми можнопользоваться для получения информации о типе данных во время выполнения.Класс Туре является производным от абстрактного класса System.Reflection.MemberInfo.

В классе MemberInfo определены приведенные ниже свойства, доступные толькодля чтения.СвойствоОписаниеType DeclaringTypeТип класса или интерфейса, в котором объявляется отражаемый членMemberTypesMemberTypesТип члена. Это значение обозначает, является ли член полем, методом, свойством, событием или конструкторомint MetadataTokenЗначение, связанное к конкретными метаданнымиModule ModuleОбъект типа Module, представляющий модуль (исполняемый файл), в котором находится отражаемый типstring NameИмя типаType ReflectedTypeТип отражаемого объекта

Следует иметь в виду, что свойство MemberType возвращает тип MemberTypes —перечисление, в котором определяются значения, обозначающие различные типы членов. К их числу относятся следующие.MemberTypes.ConstructorMemberTypes.MethodMemberTypes.FieldMemberTypes.EventMemberTypes.Property

Следовательно, тип члена можно определить, проверив свойство MemberType. Так,если свойство MemberType имеет значение MemberTypes.Method, то проверяемыйчлен является методом.

В класс MemberInfo входят два абстрактных метода: GetCustomAttributes()и IsDefined(). Оба метода связаны с атрибутами. Первый из них получает списокспециальных атрибутов, имеющих отношение к вызывающему объекту, а второй устанавливает, определен ли атрибут для вызывающего метода. В версию .NET FrameworkVersion 4.0 внедрен метод GetCustomAttributesData(), возвращающий сведенияо специальных атрибутах. (Подробнее об атрибутах речь пойдет далее в этой главе.)

Класс Туре добавляет немало своих собственных методов и свойств к числу тех, чтоопределены в классе MemberInfo. В качестве примера ниже перечислен ряд наиболеечасто используемых методов класса Туре.Метод НазначениеConstructorInfo[] GetConstructors()Получает список конструкторов для заданного типаEventInfo[] GetEvents()Получает список событий для заданного типаFieldInfo[] GetFields()Получает список полей для заданного типаType[] GetGenericArguments()Получает список аргументов типа, связанных с закрыто сконструированным обобщенным типом, или же список параметров типа, если заданный тип определен как обобщенный. Для открыто сконструированного типа этот список может содержать как аргументы, так и параметры типа. (Более подробно обобщения рассматриваются в главе 18.)MemberInfо[] GetMembers()Получает список членов для заданного типаMethodInfo[] GetMethods()Получает список методов для заданного типаPropertyInfo[] GetProperties()Получает список свойств для заданного типа

Далее приведен ряд наиболее часто используемых свойств, доступных только длячтения и определенных в классе Туре.СвойствоНазначениеAssembly AssemblyПолучает сборку для заданного типаTypeAttributes AttributesПолучает атрибуты для заданного типаType BaseTypeПолучает непосредственный базовый тип для заданного типаstring FullNameПолучает полное имя заданного типаbool IsAbstractИстинно, если заданный тип является абстрактнымbool IsArrayИстинно, если заданный тип является массивомbool IsClassИстинно, если заданный тип является классомbool IsEnumИстинно, если заданный тип является перечислениемbool IsGenericParameterИстинно, если заданный тип является параметром обобщенного типа. (Более подробно обобщения рассматриваются в главе 18.)bool IsGenericTypeИстинно, если заданный тип является обобщенным. (Более подробно обобщения рассматриваются в главе 18.)string NamespaceПолучает пространство имен для заданного типаПрименение рефлексии

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

Прикладной интерфейс Reflection API весьма обширен и поэтому не может бытьполностью рассмотрен в этой главе. Ведь для этого потребовалась бы целая книга! Ноприкладной интерфейс Reflection API имеет ясную логическую структуру, а следовательно, уяснив одну его часть, нетрудно понять и все остальное. Принимая во внимание это обстоятельство, в последующих разделах демонстрируются четыре основныхспособа применения рефлексии: получение сведений о методах, вызов методов, конструирование объектов и загрузка типов данных из сборок.Получение сведений о методах

Имея в своем распоряжении объект класса Туре, можно получить список методов,поддерживаемых отдельным типом данных, используя метод GetMethods(). Нижеприведена одна из форм, подходящих для этой цели.MethodInfo[] GetMethods()

Этот метод возвращает массив объектов класса MethodInfo, которые описываютметоды, поддерживаемые вызывающим типом. Класс MethodInfo находится в пространстве имен System.Reflection.

Класс MethodInfo является производным от абстрактного класса MethodBase, который в свою очередь наследует от класса MemberInfо. Это дает возможность пользоваться всеми свойствами и методами, определенными в этих трех классах. Например,для получения имени метода служит свойство Name. Особый интерес вызывают двачлена класса MethodInfo:ReturnType и GetParameters().

Возвращаемый тип метода находится в доступном только для чтения свойствеReturnType, которое является объектом класса Туре.

Перейти на страницу:
Комментариев (0)
название