Симон Робинсон - C# для профессионалов. Том II
- Название:C# для профессионалов. Том II
- Автор:
- Жанр:
- Издательство:Лори
- Год:2003
- Город:Москва
- ISBN:5-85582-187-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Симон Робинсон - C# для профессионалов. Том II краткое содержание
Платформа .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 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
sn -k <���имя файла ключа>
Например, чтобы создать файл ключа examplekey.key
, надо ввести:
sn -k examplekey.key
После создания файл ключа используется для присвоения устойчивого имени сборке двумя способами. Из командной строки можно использовать утилиту alink
следующим образом:
al /keyfile: <���имя файла ключа> <���имя сборки>
Чтобы задать для FirstLibrary.dll
строгое имя, можно выполнить:
al /keyfile:examplekey.key FiretLibrary.dll
или в VS.NET изменить атрибут [assembly: AssemblyKeyFile("")]
в файле AssemblyInfo.cs
. Замените просто пустую строку на строку, представляющую имя файла ключа. Сборку FirstLibrary.dll
можно затем ассоциировать с ключом, меняя атрибут AssemblyKeyFile
на [assembly: AssemblyKeyFile("examplekey.key")]
. Какой бы метод ни использовался, конечный результат получается тот же самый. CLR будет устанавливать ключ в файл с помощью Crypto Service Provider (CSP). Работа CSP не представлена в данном приложении.
Все сборки в глобальном кэше сборок должны иметь устойчивое имя. Глобальный кэш сборок применяется для хранения сборок, специально созданных для общего использования несколькими приложениями на машине. Существует несколько способов размещения сборки в глобальном кэше сборок. Можно использовать программу установки, созданную для работы с глобальным кэшем сборок, .NET Framework SDK предоставляет программу установки с именем gacutil.exe
. Чтобы поместить FirstLibrary.dll
в глобальный кэш сборок, воспользуйтесь командой:
gacutil -i FirstLibrary.dll
Можно использовать Проводник Windows для перетаскивания сборок в кэш. Отметим, что необходимо иметь привилегии администратора на машине, чтобы устанавливать сборки в глобальный кэш сборок, независимо от используемого подхода.
Типы данных
Типы данных в Java и в C# можно сгруппировать в две основные категории: типы данных значений и ссылочные типы. Существует только одна категория типа данных значений в Java. Все типы данных значений являются по умолчанию примитивными типами данных языка. C# предлагает более обильный ассортимент. Типы данных значений можно разбить на три основные категории:
□ Простые типы
□ Типы перечислений
□ Структуры
Давайте рассмотрим каждый из них по очереди.
Простые типы
Ранее в разделе о ключевых словах было сделано подробное сравнение между примитивными типами данных Java и их эквивалентами в C# (по размеру). Был также введен ряд типов данных значений, представленных в C#, которых Java не имеет. Это были 8-битовый без знака byte
(отличный от
byte в Java, который имеет знак и отображается в sbyte
в C#), короткое целое без знака ushort
, целое без знака uint
, длинное целое без знака ulong
и, наконец, высокоточное decimal
.
Когда целое число не имеет суффикса, то тип, с которым может быть связано его значение, оценивается в порядке int
, uint
, long
, ulong
, decimal
. Целые значения представляются как десятичные или шестнадцатеричные литералы. В коде ниже результат равен 52 для обоих значений:
int dec = 52;
int hex = 0x34;
Console.WriteLine("decimal {0}, hexadecimal {1}", dec, hex);
char
представляет одиночный символ Unicode длиной два байта. C# расширяет гибкость присваивания символов, допуская присваивание с помощью шестнадцатеричной кодированной последовательности с префиксом \х
и представление Unicode с помощью \u
. Также нельзя неявно преобразовать символы в целые числа. Все другие обычные кодированные последовательности языка Java полностью поддерживаются.
bool
, boolean
в Java, используются для представления значений true
и false
непосредственно или как результат равенства, как показано ниже:
bool first_time = true;
cool second_time = (counter < 0);
C# вводит тип данных decimal
, который является 128-битовым типом данных, представляющим значения в диапазоне от примерно 1.0×10 28до 7.9×10 28. Они предназначены прежде всего для финансовых и денежных вычислений, где точность является предельно важной. При присваивании типу decimal
значения, к литеральному значению должно добавляться m
, иначе компилятор считает значение типом double
. Так как decimal
не может неявно преобразовываться в double
, то отсутствие m требует явного преобразования типа:
decimal precise = 1.234m;
decimal precise = (decimal)1.234;
Значения с плавающей точкой могут быть либо double
, либо float
. При вычислениях все другие простые типы значений будут неявно преобразовываться, в соответствующий тип с плавающей точкой, если присутствует тип с плавающей точкой. Действительный числовой литерал с правой стороны оператора присваивания интерпретируется как double
по умолчанию. Так как не существует неявного преобразования из float
в double
, может оказаться удивительным возникновение ошибок компиляции. Пример ниже иллюстрирует эту проблему:
float f = 5.6;
Console.WriteLine(x);
Этот пример будет создавать сообщение об ошибке компиляции, показанное ниже.
C:\_wrox\c# for java developers\code\SuperEX\Class1.cs(15): Literal of type double cannot De implicitly converted to type 'float'; use an 'F' suffix to create a literal of this type
Существует два способа решения этой проблемы. Можно преобразовать литерал во float
, но сам компилятор предлагает более разумную альтернативу. Использование суффикса F
говорит компилятору, что это литерал типа float
, а не double
. Хотя и не обязательно, но можно использовать суффикс D
, чтобы указать на литерал типа Double
.
Типы перечислений
Перечисление является отдельным типом, состоящим из множества именованных констант. В Java можно добиться этого, используя переменные static final
. В этом смысле перечислении могут в действительности быть частью класса, который их использует. Другой подход состоит в определении перечисления как интерфейса. Пример ниже иллюстрирует такую концепцию:
interface Color {
static int RED = 0;
static int GREEN = 1;
static int BLUE = 2;
}
Этот подход проблематичен тем, что он не является безопасным в отношении типов данных. Любое считанное или вычисленное целое используется в качестве цвета. Можно, однако, программным путем реализовать перечисление с безопасными типами в Java, используя вариант шаблона (паттерна) Singleton, который ограничивает класс предопределенным числом экземпляров. Приведенный далее код показывает, как это можно сделать:
final class Day {
// final, поэтому нельзя создавать подклассы этого класса
private String internal;
Интервал:
Закладка: