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 - читать книгу онлайн бесплатно, автор Симон Робинсон

 BeforeBegin

}

Обратите внимание, что существует большое различие между этими тремя перечислениями, связанное напрямую с размером типа данных, от которого они наследуют. byte в C#, например, может содержать 1 байт памяти. Это означает, что SmallStatus не может с одержать более 255 констант или задать значение любой своей константы больше 255. Следующий листинг показывает, как можно использовать оператор sizeof() для идентификации различий между версиями Status:

int х = sizeof(Status);

int у = sizeof(SmallStatus);

int Z = sizeof(BigStatus);

Console.WriteLine("Regular size:t{0}nSmall size t{1}nLarge size:t{2}", x, y, z);

После компиляции листинг создаст результаты, показанные ниже:

Regular size: 4

Small size:   1

Large size:   8

Структуры

Одним из основных различий между структурой C# (идентифицируемой ключевым словом struct) и классом является то, что то умолчанию struct передается посредством значения, в то время как объект передается по ссылке. Как хорошо известно, объекты создаются в куче, в то время как переменные, которые на них ссылаются, хранятся в стеке. Структуры, со своей стороны, создаются и хранятся в стеке. Их аналога в Java не существует. Структуры имеют конструкторы и методы, у них могут быть индексаторы, свойства, операторы и даже вложенные типы. С помощью struсt создаются типы данных, которые ведут себя таким же образом, как встроенные типы. Ниже приведен пример использования структур:

public struct WroxInt {

 int internalVal;

 private WroxInt(int x) {

  internalVal = x;

 }

 public override string ToString() {

  return Int.ToString(internalVal);

 }

 public static impicit operator WroxInt(int x) {

  return new WroxInt(x);

 }

}

public static void UseWroxInt() {

 WroxInt wi = 90;

 Console.WriteLine(wi);

}

Этот пример показывает типы, которыми владеют мощные структуры. WroxInt используется почти так же, как и встроенный тип int. Как известно, не существует способа сделать что-нибудь подобное в Java. Ряд других достоинств и ограничений, связанных с использованием структур, представлен ниже:

□ struct нельзя наследовать от другой struct или от класса.

□ struct не является базой для класса

□ Хотя struct может oбъявлять конструкторы, эти конструкторы должны получать не меньше одного аргумента.

□ Члены struct не могут иметь инициализаторов.

□ Возможно создание экземпляра struct без использования ключевого слова new.

□ struct может реализовывать интерфейсы.

Атрибуты используются со структурами чтобы добавить им дополнительную мощь и гибкость. Атрибут StructLayout в пространстве имен System.Runtime.InteropServices, например, применяется для определения компоновки полей в struct. Это свойство подходит и для создания структуры, аналогичной по функциональности union в С/C++, union является типом данных, члены которого находятся в одном блоке памяти. Он может использоваться для хранения значений различных типов в одном блоке памяти. union годится и в том случае, когда неизвестно, каким будет тип полученных значений. Конечно, никакого рeaльного преобразования не происходит, фактически не существует никакие базовых проверок допустимости данных. Один и тот же набор битов интерпретируется различным образом. Рассмотрим пример того, как union создается с помощью struct:

[StructLayout(LayoutKind.Explicit)]

public struct Variant {

 [FieldOffset(0)] public int intVal;

 [FieldOffset(0)] public string stringVal;

 [FieldOffset(0)] public decimal decVal;

 [FieldOffset(0)] public float floatVal;

 [FieldOffset(0)] public char charVal;

}

Атрибут FieldOffset, применяемый к полям, используется для задания физического расположения указанного поля. Задание начальной точки каждого поля как 0 гарантирует, что любое сохранение данных в одном поле перезапишет практически любые данные, которые там находятся. Отсюда следует, что общий размер полей равен размеру наибольшего поля, в данном случае decimal.

Ссылочные типы

Ссылочные типы хранят ссылку на данные, которые существуют в куче. Только адреса памяти хранимых объектов сохраняются в стеке. Тип объекта, массивы, интерфейсы тип класса и делегаты являются ссылочными типами. Объекты, классы и отношения между ними не отличаются в Java и C#. Интерфейсы и их использование также похожи в обоих языках. Одно из основных различий, которое, вероятно, уже встречалось, состоит в том, что C# не имеет ключевых слов extends и implements. Оператор двоеточия (:) заменяет оба ключевых слова Java, и, как было показано ранее, директива using аналогична инструкции Java import. Строки тоже используются одинаково в C# и Java. C# вводит также новый тип ссылочного типа называемого делегатом. Делегаты представляют безопасную, с точки зрения типов, версию указателей функций. Они будут рассмотрены позже в этой главе.

Массивы

C# поддерживает "неровные" массивы и добавляет многомерные массивы. Может сбить с толку то, что Java не делает между ними различий:

int [] х = new int[20]; // как в Java, только [] должны следовать

                        // за типом

int [,] у = new int[12, 3]; // то же самое, что int у[] [] = new

                            // int[12][3];

int[][] z = new int[5][]; // то же самое, что и int x[][] = new

                          // int [5][];

Примечание. Ключевое слово int[] обозначает реальный тип данных, поэтому синтаксически оно записывается таким образом. Нельзя, как в Java, поместить двойные скобки перед или после переменной. Прежде чем перейти к дополнительным деталям о ссылочных типах и обсуждению таких концепции, как классы, давайте поговорим немного об операциях. Следующий раздел посвящен операторам.

Операторы

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

Присваивание

C# и Java используют знак = для присваивания значений переменным. В C#, как и в Java, переменные присвоенные объектам содержат только ссылку или "адрес" на этот объект, а не сам объект. Присваивание одной ссылочной переменной другой таким образом просто копирует "адрес" в новую переменную. Следовательно обе переменные теперь имеют возможность делать ссылку на один объект. Эту концепцию легко проиллюстрировать с помощью примера. Рассмотрим класс ExOperators, приведенный ниже:

public class EXOperators {

 internal int р;

 public EXOperators() {}

 public static void Main() {

  ExOperators one = new EXOperators();

  one.p = 200;

  EXOperators two;

  two = one;

  two.p = 100;

  Console.WriteLine(two.p);

  Console.WriteLine(one.p);

 }

}

Пока проигнорируем ключевое слово internal перед переменной р. Оно является модификатором доступа, который будет рассмотрен далее в этой главе. Достаточно сказать, что оно делает переменную р видимой для метода Main. Приведенный выше пример создает экземпляр объекта EXOperators и сохраняет его в локальной переменной one. Эта переменная затем присваивается другой переменной — two. После этого значение p в объекте, на который ссылается two, изменяется на 100. В конце выводится значение переменной p в обоих объектах. Компиляция и выполнение этого даст результат 100 дважды, указывая, что изменение two.р было тем же самым, что изменение значения one.р.

Сравнение

Операторы сравнения обычно совпадают по форме и функциональности в обоих языках. Четырьмя основными операторами являются < — меньше, чем, > — больше, чем, <= — меньше или равно и >= — больше или равно.

Чтобы определить, принадлежит ли объект заданному классу или любому из классов предков, Java использует оператор instanceof. Простой пример этого приведен в листинге ниже:

String у = "a string";

Object х = у;

if (х instanceof String) {

 System.out.println("х is a string");

}

В C# эквивалентом instanceof является оператор is. Он возвращает true, если тип времени выполнения заданного класса совместим с указанным типом. Версия C# приведенного выше кода будет иметь следующую форму:


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

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


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

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

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