Симон Робинсон - 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 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
public Example() {
}
}
}
namespace Com.Cslib {
using System;
using System.Collections;
public class AddLib {
public AddLib() {
}
public int operationAdd(int a, int b) {
return a + b;
}
}
}
Пространства имен вводятся с помощью директивы using
, где является именем пространства имен. В C# не требуется использовать *
, так как директива using
неявно импортирует все элементы указанного пространства имен. Другим преимуществом является то, что пространства имен могут быть добавлены исключительно в конкретный класс. Хотя классы Example
и AddLib
выше определены в файле namespace_samples.cs
. Example
не имеет доступа к пространству имен System.Collections
, несмотря на то, что AddLib
его имеет. Однако инструкция import
из Java не является специфической для класса. Она импортирует указанные элементы в файл. Вновь обратимся к х.java
.
// х.java
public class x {
}
class у {
}
class z {
}
Если добавить инструкцию импорта, такую как import java.util.Hashtable
, все классы, определенные внутри этого файла, будут иметь доступ к классу Hashtable
. Код ниже будет компилироваться:
// x.java
package samples;
import java.util.Hashtable;
public class x {
Hashtable hash = new Hashtable();
}
class у {
Hashtable hash = new Hashtable();
}
class z {
Hashtable hash = new Hashtable();
}
Пространства имен можно также определять внутри другого пространства имен. Этот тип гибкости недоступен в Java без создания подкаталогов. Приведенное выше пространство Com.Cslib
можно расширить следующим образом:
namespace Com.Cslib {
using System;
public class AddLib {
public AddLib() {
}
public int operationAdd(int a, int b) {
return a + b;
}
}
namespace Ext {
public class AddLib {
public AddLib() {
}
public int operationAdd(int a, int b) {
return a + b;
}
}
}
}
Пакет Java com.javalib
можно расширить, чтобы отобразить приведенный выше код, создав новую папку \EXT
в каталоге com\javalib
. В этой папке создается файл исходного кода AddLib.java
следующим образом:
package com.javalib.ext;
public class AddLib {
public AddLib() {
}
public int operationAdd(int a, int b) {
return a + b;
}
}
Отметим, что имя пакета было расширено для этого класса до com.javalib.ext
.
Внутреннее пространство имен и подпакеты доступны с помощью оператора точки "."; следовательно, можно было в C# извлечь расширенный AddLib с помощью нотации Com.Cslib.Ext.AddLib
. В Java можно было бы использовать com.javalib.ext.AddLib
.
Приведенный выше пример показывает одно сходство между пакетами Java и пространствами имен C#. Даже если они не используются для внешнего представления, пространства имен, так же как и пакеты, предоставляют прекрасный способ создания глобально уникальных типов, свою собственную песочницу в мире сборок независимых поставщиков. В той степени насколько это имеет отношение к C#, Com.Cslib.AddLib
является не тем же классом, что и Com.Cslib.Ext.AddLib
.
Классы Java являются частью пакета, нравится им это или нет. Все классы, созданные без указания пакета, предполагают включение в пакет по умолчанию. C# имитирует эту функциональность. Даже если не объявить пространство имен, оно будет создано по умолчанию. Оно присутствует в каждом файле и доступно для использования в именованных пространствах имен. Так же как в Java нельзя изменить информацию о пакете, пространства имен нельзя модифицировать. Пакеты могут охватывать несколько файлов в одной папке, пространство имен может охватывать несколько файлов в любом числе папок и даже в нескольких сборках (сборки будут рассмотрены в следующем разделе). Два класса, охватываемые пространством имен А, которые определены в отдельных файлах и существуют в отдельных папках, оба являются частью пространства имен А.
Чтобы получить доступ к элементу в пространстве имен, необходимо либо использовать полностью квалифицированное имя типа (в приведенном выше примере это Com.Cslib.AddLib
) или импортировать элемент пространства имен в текущее пространство имен, используя директиву using
. Отметим, что по умолчанию доступность типов данных внутри пространства имен является внутренней. Необходимо явно отметить типы данных как открытые ( public
), если требуется сделать их доступными без полной квалификации, но придерживаться такой стратегии строго не рекомендуется. Никакие другие модификаторы доступа не разрешены. В Java внутренние типы пакета могут также помечаться как final
или abstract
, или не помечаться вообще (этот доступ по умолчанию открывает их только для потребителей внутри пакета). Модификаторы доступа будут рассматриваться позже в этом приложении.
Последним атрибутом, который относится к пространству имен, но не имеет отношения к пакетам, является возможность задания алиаса для using
. Алиасы using
существенно облегчают квалификацию идентификатора для пространства имен или класса. Синтаксис очень простой. Предположим, что имеется пространство имен Very.Very.Long.Namespace.Name
. Можно определить и использовать алиас using
для пространства имен следующим образом:
using WLNN = Very.Very.Long.Namespace.Name;
Конечно, имя псевдонима (алиаса) является произвольным, но должно следовать правилам именования переменных в C#.
Создание и добавление библиотек при компиляции
Ранее, при обсуждении компиляции и единиц компиляции кратко было сказано о концепции библиотек. Если создана библиотека, то необходимо, чтобы она была доступна для всех потенциальных потребителей. В Java это делается добавлением пути доступа к папке, содержащей классы библиотеки, в переменную окружения Classpath
. Конечно, чтобы упростить это, можно добавить файлы класса в папке в JAR и поместить путь доступа к файлу jar
в Classpath
. В любом случае работа загрузчика классов состоит в нахождении всех неразрешенных ссылок, и он будет искать их в Classpath
.
C# предоставляет совсем другие механизмы для упаковки классов в библиотеку. По умолчанию все файлы C# в проекте станут частью единицы компиляции при использовании VS.NET. Если применяется командная строка, необходимо будет явно добавлять каждый файл, который должен быть частью единицы компиляции, как описано выше.
Библиотеки кодов компилируются в РЕ (portable executable — переносимый исполнимый) тип файла. Необходимо в этом месте сделать различие между библиотеками кодов, о которых идет речь, и проектом Class Library в C#, который может создаваться с помощью IDE VS.NET. Под библиотекой кода понимается повторно используемое множество файлов C#, соединенных вместе в некоторой единице компиляции, поэтому происходит ссылка на файл РЕ, а не на реальную DLL или ЕХЕ. Библиотека кода такого вида более часто называется сборкой, поэтому это название будем использовать в дальнейшем, чтобы избежать путаницы.
Читать дальшеИнтервал:
Закладка: