Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C#

Г. Шилдт - Полный справочник по C# (1160789), страница 92

Файл №1160789 Г. Шилдт - Полный справочник по C# (Г. Шилдт - Полный справочник по C#) 92 страницаГ. Шилдт - Полный справочник по C# (1160789) страница 922019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 92)

SIZE инициализируется значением 10. После этого его можноиспользовать, но не изменять. Чтобы убедиться в этом, попытайтесь удалить символкомментария, стоящий в начале последней строки, и скомпилировать программу. Выполучите сообщение об ошибке.stackallocС помощью ключевого слова s t a c k a l l o c можно использовать память стека. Этоможно делать только при инициализации локальных переменных.

Распределение памяти стека имеет следующий формат:тип *р = stackalloc тип[размвр]Здесь р — указатель, который получает адрес области памяти достаточно большогоразмера, чтобы хранить размер объектов типа тип. Ключевое слово s t a c k a l l o cможно использовать только в контексте опасного (unsafe) кода.Обычно память для объектов выделяется из кучи, которая представляет собой область свободной памяти.

Выделение памяти из области стека — своего рода исключение. Переменные, размещенные в области стека, не обрабатываются сборщиком мусора. Но они существуют только при выполнении блока, где были объявлены. По завершении выполнения блока эта память освобождается. Единственное достоинствоиспользования ключевого слова s t a c k a l l o c — можно не беспокоиться о том, что соответствующая область памяти попадет под "метлу" сборщика мусора.Рассмотрим пример использования ключевого слова s t a c k a l l o c :// Демонстрация использования ключевого слова s t a c k a l l o c .u s i n g System;class UseStackAlloc {unsafe public s t a t i c void Main() {i n t * p t r s = stackalloc i n t [ 3 ] ;Глава 18. Опасный код, указатели и другие темы497ptrs[O] == 1;ptrs[l] = 2;ptrs[2] = 3;for(int i=0; i < 3;Console.WriteLine(ptrs[ij);Результаты выполнения этой программы таковы:123ИНСТРУКЦИЯ u s i n gКлючевое слово using, применение которого в качестве директивы описано выше,имеет и второй вариант использования, а именно в качестве инструкции using.

Вэтом случае возможны следующие две формы:using (obj) {// Использование объекта obj.using (type obj = инициализатор) {// Использование объекта obj.Здесь элемент obj представляет объект, используемый внутри блока using. В первой форме этот объект объявляется вне us ing-инструкции, а во второй — внутри.При завершении блока для объекта obj вызывается метод Dispose () (определенныйв интерфейсе System. IDisposable). Инструкция u s i n g применяется только к объектам, которые реализованы в интерфейсе System.

IDisposable.Рассмотрим пример использования каждой формы инструкция using:// Демонстрация использования инструкции u s i n g .using System;using System.10;class UsingDemo {public s t a t i c void Main() {StreamReader sr = new StreamReader("test.txt");// Используем объект внутри инструкции using,using(sr) {Console.WriteLine(sr.ReadLine());sr.Close();// Создаем StreamReader-объект внутри инструкции using,using(StreamReader sr2 = new StreamReader("test.txt")) {Console.WriteLine(sr2.ReadLine());sr2.Close();}}498Часть I. Язык С#Класс StreamReader реализует интерфейс IDispo sable (через свой базовый классTextReader). Следовательно, его можно использовать в us ing-инструкции.(Описание интерфейса iDisposable см. в главе 24.)Модификаторы const И v o l a t i l eМодификатор const используется для объявления полей или локальных переменных, которые не должны изменяться.

Этим переменным необходимо присвоить начальные значения при объявлении. Таким образом, const-переменная является посути константой. Например, при выполнении инструкцииI const i n t i = 10;создается const-переменная i, которая имеет значение 10.Модификатор v o l a t i l e сообщает компилятору о том, что значение соответствующего поля может быть изменено в программе неявным образом. Например, поле,содержащее текущее значение системного времени, может обновляться операционнойсистемой автоматически.

В этой ситуации содержимое такого поля изменяется безявного выполнения инструкции присваивания. Причина внешнего изменения поляможет быть очень важной. Дело в том, что С#-компилятору разрешается оптимизировать определенные выражения автоматически в предположении, что содержимое поляостается неизменным, если оно не находится в левой части инструкции присваивания. Но если некоторые факторы, не относящиеся к текущему коду (например, связанные с обработкой второго потока выполнения), изменят значение этого поля, такое предположение окажется неверным. Использование модификатора v o l a t i l e позволяет сообщить компилятору о том, что он должен получать значение этого поляпри каждом обращении к нему.Глава 18. Опасный код, указатели и другие темы499Полныйсправочник поБиблиотека С#Часть II посвящена описанию библиотеки С#.

Какупоминалось в части I, используемая в С# библиотека классовявляется по сути библиотекой .NET Framework. Такимобразом, материал этого раздела применим не только к языкуС#, но и в целом к среде .NET Framework.Библиотека С# организована с использованием пространствимен. Для работы с какой-либо ее частью с помощьюдирективы using импортируется соответствующеепространство имен.

Конечно, можно также указывать полноеимя элемента, т.е. сопровождать его названием пространстваимен, но легче импортировать (так чаще всего и поступают)само пространство имен.Полныйсправочник попримранитви имен dystemЗта глава посвящена пространству имен System, которое занимает наивысшийуровень в библиотеке С#. Оно содержит классы, структуры, интерфейсы и перечисления, которые наиболее часто употребляются в Сопрограммах или считаютсяважной составляющей среды .NET Framework. Таким образом, пространство именSystem определяет ядро библиотеки С#.Пространство имен System также содержит множество вложенных пространствимен, предназначенных для поддержки таких подсистем, как System.Net. Некоторыеиз них описаны ниже в этой книге. Однако в этой главе рассматриваются только члены самого пространства имен System.Члены пространства имен systemПомимо большого количества классов исключений, пространство имен System coдержит следующие классы:ActivatorArrayAttributeUsageAttributeCharEnumeratorContextBoundOb^ ectDBNullEnvironmentFlagsAttributeLocalDataStoreSlotMTAThreadAttributeObjectParamArrayAttributeSerializableAttributeThreadStaticAttributeUnhandledExceptionEventArgsValueTypeAppDomainAssemblyLoadEventArgsBitConverterCLSCompliantAttributeContextStaticAttributeDelegateEventArgsGCMarshalByRefObjectMulticastDelegateObsoleteAttributeRandomSTAThreadAttributeTimeZoneUriVersionAppDomainSetupAttributeBufferConsoleConvertEnumExceptionLoaderOptimizationAttributeMathNonSerializedAttributeOperatingSysternResolveEventArgsStringTypeUriBuilderWeakReferenceВ пространстве имен System определены такие структуры:ArglteratorCharDoubleInt32RuntimeArgumentHandleRuntimeTypeHandleTimeSpanUInt32BooleanDateTimeGuidInt64RuntimeFieldHandleSByteTypedReferenceUInt64ByteDecimalIntl6IntPtrRuntimeMethodHandleSingleUIntl6UlntPtrVoidВ пространстве имен System определены следующие интерфейсы:IAppDomainSetupIComparableIDisposableIServiceProviderIAsyncResultIConvertibleIFormatProviderГлава 19.

Пространство имен SystemICloneableICustomFormatterIFormattable503В пространстве имен System определены такие делегаты:AssemblyLoadEventHandlerAsyncCallbackCrossAppDomainDelegateEventHandlerResolveEventHandlerUnhandledExceptionEventHandlerВ пространстве имен System определены следующие перечисления:AttributeTargetsDayOfWeekEnvironment.SpecialFolderLoaderOptimizationPlatformIDTypeCodeUriHostNameTypeUriPartialКак видно по приведенным выше таблицам, пространство имен System отличаетсядовольно большим объемом, и все его составляющие невозможно детально рассмотреть в одной главе. Более того, хотя некоторые члены System в общем случае применимы к среде .NET Framework, но С#-программистами они обычно не используются.Следует также отметить, что некоторые классы пространства имен System (например,Type, Exception и A t t r i b u t e ) рассмотрены в части I или в других разделах настоящей книги.

А поскольку класс System. S t r i n g , в котором определяется С#-типs t r i n g , представляет собой очень большую и важную тему, его описание приводитсяв главе 20 (как тесно связанное с темой форматирования). Поэтому в настоящей главеописаны только те члены пространства имен System, которые пользуются повышенным вниманием у С#-программистов и не упоминаются в других разделах книги.Класс MathВ классе Math определены такие стандартные математические операции, как извлечение квадратного корня, вычисление синуса, косинуса и логарифмов. Методы,определенные в классе Math, перечислены в табл.

19.1. Все углы задаются в радианах.Обратите внимание на то, что все методы, определенные в классе Math, являютсяstatic-методами. Поэтому для их использования не нужно создавать объект классаMath, а значит, нет необходимости и в конструкторах класса Math.В классе Math также определены следующие два поля:public const double Epublic const double PIгде E — значение основания натурального логарифма, известное как е, a PI — значение иррационального числа pi.Math является sealed-классом, т.е. он не может иметь производных классов.Таблица 19.1. Методы, определенные в классе MathМетодОписаниеp u b l i c s t a t i c doubleВозвращает абсолютную величину параметра vAbs(double v)p u b l i c s t a t i c f l o a t Abs ( f l o a t v)Возвращает абсолютную величину параметра vp u b l i c s t a t i c decimalВозвращает абсолютную величину параметра vA b s ( d e c i m a l v)p u b l i c s t a t i c i n t A b s ( i n t v)Возвращает абсолютную величину параметра vp u b l i c s t a t i c s h o r t Abs ( s h o r t v)Возвращает абсолютную величину параметра vp u b l i c s t a t i c l o n g Abs ( l o n g v)Возвращает абсолютную величину параметра vp u b l i c s t a t i c s b y t e A b s ( s b y t e v)Возвращает абсолютную величину параметра v504Часть II.

Характеристики

Тип файла
PDF-файл
Размер
24,15 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее