MyBooks.club
Все категории

Симон Робинсон - C# для профессионалов. Том II

На сайте mybooks.club вы можете бесплатно читать книги онлайн без регистрации, включая Симон Робинсон - C# для профессионалов. Том II. Жанр: Программирование издательство -,. Доступна полная версия книги с кратким содержанием для предварительного ознакомления, аннотацией (предисловием), рецензиями от других читателей и их экспертным мнением.
Кроме того, на сайте mybooks.club вы найдете множество новинок, которые стоит прочитать.

Название:
C# для профессионалов. Том II
Издательство:
-
ISBN:
-
Год:
-
Дата добавления:
17 сентябрь 2019
Количество просмотров:
319
Читать онлайн
Симон Робинсон - C# для профессионалов. Том II

Симон Робинсон - C# для профессионалов. Том II краткое содержание

Симон Робинсон - C# для профессионалов. Том II - описание и краткое содержание, автор Симон Робинсон, читайте бесплатно онлайн на сайте электронной библиотеки mybooks.club
C# для профессионаловПлатформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.Для кого предназначена эта книгаЭта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.Основные темы книги• Все особенности языка C#• C# и объектно-ориентированное программирование• Приложения и службы Windows• Создание web-страниц и web-служб с помощью ASP NET• Сборки .NET• Доступ к данным при помощи ADO NET• Создание распределённых приложений с помощью NET Remoting• Интеграция с COM, COM+ и службой Active Directory

C# для профессионалов. Том II читать онлайн бесплатно

C# для профессионалов. Том II - читать книгу онлайн бесплатно, автор Симон Робинсон

  }

 }

 set {

  if (a.Equals("Age") {

   age = int.Parse(value);

  }

  else {

   listener(a+ " is read only or does not exist");

  }

 }

}

Экземпляр делегата, связанный с приемником событий, никогда не создается. Это объясняется тем, что создание экземпляра реально происходит на клиенте, который потребляет это событие. Для клиента событие представляется как открытое поле, но не надо думать, что оно не имеет ограничений. Единственными возможными действиями по отношению к полю события являются:

□ Создание в событии новых экземпляров делегатов

□ Удаление экземпляров делегатов из события

C# использует операторы += и -= соответственно для добавления и удаления экземпляров делегатов из событий. Оба оператора одинаковы в C# и Java. Недопустимо задавать событие, равным одному любому экземпляру делегата. Вместо этого можно добавить в событие столько делегатов, сколько понадобится. Это свободно транслируется в требуемое количество приемников событий для одного события. Пример ниже показывает, как это можно сделать:

public delegate void TestEvent();

public class Tester {

 public event TestEvent testEvent;

 Tester() { }

 public void Perform() {

  testEvent();

 }

 public class Client {

  Client() {

   Tester tester = new Tester();

   TestEvent a = new TestEvent(Callback1); // сначала создать делегата

   tester.testEvent += a; // затем добавить его

   tester.testEvent += new Test(CallBack2); // или можно сделать это

                                            // за один проход

   tester.testEvent += new Test(Callback3);

   tester.testEvent += new Test(Callback4);

   tester.Perform();

  }

  public void CallBack1() {

   // уведомить через e-mail)

  }

  public void CallBack2() {

   // послать факсы

  }

  public void CallBack3() {

   // послать беспроводное сообщение

  }

  public void CallBack4() {

   // сохранить в журнале

  }

 }

}

Как можно понять из приведенного примера, чтобы использовать события класса, необходимо сначала получить метод в классе подписчиков для обработки события (очень похоже на то, как действуют делегаты), затем добавить методы обработки события в событие. Давайте создадим статический метод Notify():

public static void Notify(string i) {

 Console.WriteLine(i);

}

Этот метод использует такую же сигнатуру, что и приемник событий класса Properties. В методе Main можно зарегистрировать метод Notify() и задать условно ошибку, чтобы протестировать событие:

Properties props = new Properties("hello"); // зарегистрировать обработчик событий

props.ExceptionEventListener += new ExceptionEventListener(test);

p["Aged"] = "35"; // неправильный ключ используется

                  // для моделирования ошибки

Исключения

Исключения в C# на первый взгляд являются такими же, как в Java. Инструкции C# try-catch и try-catch-finally работают подобно своим аналогам в Java (смотрите раздел о ключевых словах). Однако в C# нельзя использовать инструкцию throws, поэтому невозможно указать вызывающей стороне, что некоторый код в методе может порождать исключение. Также имеется try-finally, который не подавляет порожденные исключения, но предлагает блок finally, выполняющий после порождения исключения, чтобы произвести очистку.

Порождение исключений делается с помощью инструкции throw. Например, чтобы породить SystemException, используется код throw new SystemException (<arg-list>);. Это полностью совпадает c тем, как исключения порождается в Java. Требуется только инструкция throws и подходящий класс исключения. Далее представлен список некоторых стандартных классов исключений, предоставляемых средой выполнения .NET. Так же как в Java, их функциональность отражается в данных им именах:

□ Exception — базовый класс для всех объектов исключений.

□ SystemException — базовый класс для всех ошибок, создаваемых во время выполнения.

□ IndexOutOfRangeException возникает, когда индекс массива во время выполнения оказывается вне границ заданного диапазона.

□ NullReferenceException порождается, когда во время выполнения ссылаются на null.

□ InvalidOperationException порождается некоторыми методами, когда вызов метода бывает не действителен для текущего состояния объекта.

□ ArgumentException — базовый класс всех исключений для аргументов.

□ ArgumentNullException порождается если аргумент задан как null, когда это недопустимо.

□ InteropException является базовым классом для исключений, которые возникают или направлены на среды вне CLR.

Одним исключением, которое возникает независимо от того, будет ли оно специально порождаться или нет, является System.OverflowException, связанное с вычисленными результатами, превосходящими диапазон значений типа данных переменной результата. Инструкции checked и unchecked могут инициировать или подавлять связанные с этим исключения. Дополнительная информация о checked и unchecked находится в разделе данного приложения о ключевых словах.

Условная компиляция

Препроцессор в C# эмулируется. Он выполняется как отдельный процесс, прежде чем компилятор начнет свою работу. Поддерживаемые здесь директивы больше всего соответствуют C++, чем какому-либо другому языку. Конечно, в Java не существует эквивалентов функциональности, описанных в этом разделе. Разрешается определять символы, которые проверяются с помощью простых условных директив. Те, которые оказываются true, включаются и компилируются, иначе код игнорируется. Определение символа может происходить двумя способами. Прежде всего с использованием ключа компилятора /define, за которым следует двоеточие и определяемый символ, например:

csc /define:TEST_TEST samples.cs

Можно также определить символы на странице конфигурационных свойств проекта, добавляя их в разделенный двоеточиями список констант условной компиляции. Или пойти программным путем, используя директиву #define. В этом случае директива должна появиться раньше, чем что-либо другое, и применяется ко всем лексемам в области действия файла. Здесь перечислены допустимые условные директивы:

□ #if используется для проверки существования символа

□ #elif позволяет добавить несколько ветвей к инструкции #if

□ #else предоставляет окончательное альтернативное условие для #if и #elif

□ #endif заканчивает инструкцию #if

namespace Samples {

 using System;

#if EXAMPLE

 public class Example {

  public Example() {

  }

 }

#elif TEST_TEST

 public class Test {

  public Test() {

  }

 }

#else

 public class None {

  public None() {

  }

 }

#endif

}

Добавление инструкции #define TEST_TEST делает класс Test видимым для компиляции, a #define EXAMPLE делает класс Example видимым для компиляции. Если ничего не добавлять, то будет компилироваться класс None. Для препроцессора C# доступны также две другие директивы — #warning и #error. Они должны помещаться в условное выражение #if. Попробуйте добавить следующую строку под инструкцией #else в приведенный код:

#warning I wouldn't try to instantiate the example object if I were you

C# также поддерживает условную функциональность. В коде ниже добавление условного атрибута в AMethod() делает его компилируемым только в том случае, когда определен символ Test:

[conditional("TEST_TEST")]

public void AMethod() {

 string s = "I am available only when Test is defined";

}

Вопросы безопасности

В настоящее время код может приходить из разных источников. В Java, до появления Java 2, существовала установка, что все приложения, которым разрешается использовать все свойства языка, должны быть абсолютно надежными. Последующий опыт показал, что такой подход может быть достаточно опасным. Java теперь предоставляет службы политики безопасности с помощью файла java.policy. Приложения подвергаются той же проверке безопасности, что и апплеты. Политика безопасности может редактироваться напрямую или через policytool для создания приложений, в которых есть ограничения. Среда .NET для решения этой проблемы использует систему безопасности доступа к коду, которая контролирует доступ к защищенным ресурсам и операциям. Ниже представлен список наиболее важных функций системы безопасности доступа к коду:


Симон Робинсон читать все книги автора по порядку

Симон Робинсон - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mybooks.club.


C# для профессионалов. Том II отзывы

Отзывы читателей о книге C# для профессионалов. Том II, автор: Симон Робинсон. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.