Герберт Шилдт - C# 4.0: полное руководство

Тут можно читать онлайн Герберт Шилдт - C# 4.0: полное руководство - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство ООО И.Д. Вильямс, год 2011. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    C# 4.0: полное руководство
  • Автор:
  • Жанр:
  • Издательство:
    ООО И.Д. Вильямс
  • Год:
    2011
  • Город:
    Москва -- Киев
  • ISBN:
    978-5-8459-1684-6
  • Рейтинг:
    3.93/5. Голосов: 141
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Герберт Шилдт - C# 4.0: полное руководство краткое содержание

C# 4.0: полное руководство - описание и краткое содержание, автор Герберт Шилдт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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


Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок

C# 4.0: полное руководство - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Герберт Шилдт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Console.WriteLine("Анализ методов, определенных " +

"в классе " + t.Name);

Console.WriteLine();

Console.WriteLine("Поддерживаемые методы: ");

MethodInfo[] mi = t.GetMethods();

// Вывести методы, поддерживаемые в классе MyClass.

foreach (MethodInfo m in mi) {

// Вывести возвращаемый тип и имя каждого метода.

Console.Write(" " + m.ReturnType.Name + " " + m.Name + "(");

// Вывести параметры.

ParameterInfo[] pi = m.GetParameters();

for (int i = 0; i < pi.Length; i++) {

Console.Write(pi[i].ParameterType.Name + " " + pi[i].Name);

if (i + 1 < pi.Length) Console.Write(", ");

}

Console.WriteLine(")");

Console.WriteLine();

}

}

}

Эта программа дает следующий результат.

Поддерживаемые методы:

Int32 Sum()

Boolean IsBetween (Int32 i)

Void Set(Int32 a, Int32 b)

Void Set (Double a, Double b)'

Void Show()

String ToString()

Boolean Equals(Object ob j )

Int32 GetHashCode()

Type GetType()

Как видите, помимо методов, определенных в классе MyClass, в данной программе выводятся также методы, определенные в классе object, поскольку все типы данных в C# наследуют от класса object. Кроме того, в качестве имен типов указываются имена структуры .NET. Обратите также внимание на то, что метод Set()выводится дважды, поскольку он перегружается. Один из его вариантов принимает аргументы типа int, а другой — аргументы типа double.

Рассмотрим эту программу более подробно. Прежде всего следует заметить, что в классе MyClassопределен открытый конструктор и ряд открытых методов, в том числе и перегружаемый метод Set().

Объект класса Туре, представляющий класс MyClass, создается в методе Main()в следующей строке кода.

Type t = typeof(MyClass); // получить объект класса Туре,

// представляющий класс MyClass

Напомним, что оператор typeofвозвращает объект класса Туре, представляющий конкретный тип данных (в данном случае — класс MyClass).

С помощью переменной t и прикладного интерфейса Reflection API в данной программе затем выводятся сведения о методах, поддерживаемых в классе MyClass. Для этого в приведенной ниже строке кода сначала выводится список соответствующих методов.

MethodInfo[] mi = t.GetMethods();

Затем в цикле foreachорганизуется обращение к элементам массива mi. На каждом шаге этого цикла выводится возвращаемый тип, имя и параметры отдельного метода, как показано в приведенном ниже фрагменте кода.

foreach(MethodInfo m in mi) {

// Вывести возвращаемый тип и имя каждого метода.

Console.Write(" " + m.ReturnType.Name + " " + m.Name + "(");

// Вывести параметры.

ParameterInfo[] pi = m.GetParameters();

for(int i=0; i < pi.Length; i++) {

Console.Write(pi[i].ParameterType.Name + " " + pi[i].Name);

if(i+1 < pi.Length)

Console.Write(", ");

}

}

В этом фрагменте кода параметры, связанные с каждым методом, сначала создаются с помощью метода GetParameters()и сохраняются в массиве pi. Затем в цикле forпроисходит обращение к элементам массива pinвыводится тип и имя каждого параметра. Самое главное, что все эти сведения создаются динамически во время выполнения программы, не опираясь на предварительную осведомленность о классе MyClass.

Вторая форма метода GetMethods()

Существует вторая форма метода GetMethods(), позволяющая указывать различные флажки для отфильтровывания извлекаемых сведений о методах. Ниже приведена эта общая форма метода GetMethods().

MethodInfo[] GetMethods(BindingFlags флажки)

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

Значение - Описание

DeclaredOnly- Извлекаются только те методы, которые определены в заданном классе. Унаследованные методы в извлекаемые сведения не включаются

Instance- Извлекаются методы экземпляра

NonPublic- Извлекаются методы, не являющиеся открытыми

Public- Извлекаются открытые методы

Static- Извлекаются статические методы

Два или несколько флажков можно объединить с помощью логической операции ИЛИ. Но как минимум флажок Instanceили Staticследует указывать вместе с флажком Publicили NonPublic. В противном случае не будут извлечены сведения ни об одном из методов.

Форма BindingFlagsметода GetMethods()чаще всего применяется для получения списка методов, определенных в классе, без дополнительного извлечения наследуемых методов. Это особенно удобно в тех случаях, когда требуется исключить получение сведений о методах, определяемых в классе конкретного объекта. В качестве примера попробуем выполнить следующую замену в вызове метода GetMethods()из предыдущей программы.

// Теперь получаются сведения только о тех методах,

// которые объявлены в классе MyClass.

MethodInfo[] mi = t.GetMethods(BindingFlags.DeclaredOnly |

BindingFlags.Instance |

BindingFlags.Public);

После этой замены программа дает следующий результат.

Анализ методов, определенных в классе MyClass

Поддерживаемые методы:

Int32 Sum()

Boolean IsBetween(Int32 i)

Void Set(Int32 a, Int32 b)

Void Set(Double a, Double b)

Void Show()

Как видите, теперь выводятся только те методы, которые явно определены в классе MyClass.

Вызов методов с помощью рефлексии

Как только методы, поддерживаемые определенным типом данных, становятся известны, их можно вызывать. Для этой цели служит метод Invoke(), входящий в состав класса Methodlnfо. Ниже приведена одна из форм этого метода:

object Invoke(object obj, object[] parameters)

где obj обозначает ссылку на объект, для которого вызывается метод. Для вызова статических методов ( static) в качестве параметра obj передается пустое значение ( null). Любые аргументы, которые должны быть переданы методу, указываются в массиве parameters. Если же аргументы не нужны, то вместо массива parameters указывается пустое значение ( null). Кроме того, количество элементов массива parameters должно точно соответствовать количеству передаваемых аргументов. Так, если требуется передать два аргумента, то массив parameters должен состоять из двух элементов, но не из трех или четырех. Значение, возвращаемое вызываемым методом, передается методу Invoke(), который и возвращает его.

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

Интервал:

Закладка:

Сделать


Герберт Шилдт читать все книги автора по порядку

Герберт Шилдт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# 4.0: полное руководство отзывы


Отзывы читателей о книге C# 4.0: полное руководство, автор: Герберт Шилдт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x