KnigaRead.com/
KnigaRead.com » Разная литература » Прочее » Герберт Шилдт - C# 4.0 полное руководство - 2011

Герберт Шилдт - C# 4.0 полное руководство - 2011

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн "Герберт Шилдт - C# 4.0 полное руководство - 2011". Жанр: Прочее издательство неизвестно, год неизвестен.
Перейти на страницу:

extern alias имя_сборки;

Если продолжить приведенный выше пример, то в программе должны появиться следующие строки кода.

extern alias Asml; extern alias Asm2;

Теперь оба варианта класса MyClass будут доступны в программе по соответствующему псевдониму.

Рассмотрим полноценный пример программы, в которой демонстрируется применение внешних псевдонимов. Эта программа состоит из трех файлов. Ниже приведен исходный текст, который следует поместить в первый файл — testl.cs.

using System;

namespace MyNS {

public class MyClass { public MyClassO {

Console.WriteLine("Конструирование из файла MyClassl.dll.");

}

}

}

Далее следует исходный текст из файла test2.cs.

using System;

namespace MyNS {

public class MyClass { public MyClassO {

Console.WriteLine("Конструирование из файла MyClass2.dll.");

}

}

}

Обратите внимание на то, что в обоих файлах, testl. cs и test2 . cs, объявляется пространство имен MyNS и что именно в этом пространстве в обоих файлах определяется класс MyClass. Следовательно, без псевдонима оба варианта класса MyClass будут недоступными ни одной из программ.

И наконец, ниже приведен исходный текст из третьего файла test3.cs, где используются оба варианта класса MyClass из файлов testl. cs и test2 . cs. Это становится возможным благодаря операторам с внешними псевдонимами.

// Операторы с внешними псевдонимами должны быть указаны в самом начале файла, extern alias Asml; extern alias Asm2;

using System;

class Demo {

static void Main() {

Asml::MyNS.MyClass t = new Asml::MyNS.MyClass() ;

Asm2::MyNS.MyClass t2 = new Asm2::MyNS.MyClass();

}

}

Сначала следует скомпилировать файлы testl. cs и test2 . cs в их библиотечные эквиваленты DLL. Для этого достаточно ввести в командной строке следующее.

csc /t:library testl.cs csc /t:library test2.cs

Затем необходимо скомпилировать файл test3.cs, указав в командной строке

csc /г:Asml=testl.dll /г:Asm2=test2.dll test3.cs

Обратите внимание на применение параметра / г, уведомляющего компилятор

о том, что ссылка на метаданные находится в соответствующем файле. В данном случае псевдоним Asml связывается с файлом testl. dll, а псевдоним Asm2 — с файлом test2.dll.

В самой программе псевдонимы указываются в приведенных ниже операторах с модификатором extern, которые располагаются в самом начале файла.

extern alias Asml; extern alias Asm2;

А в методе Main () псевдонимы используются для разрешения неоднозначности ссылок на класс MyClass. Обратите внимание на следующее применение псевдонима для обращения к классу MyClass.

Asml::MyNS.MyClass

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

Ниже приведен результат выполнения данной программы.

Конструирование из файла MyClassl.dll.

Конструирование из файла MyClass2.dll.

ЧАСТЬ 2 Библиотека C#

В части II рассматривается библиотека С#. Как пояснялось в части I, используемая в C# библиотека на самом деле является библиотекой классов для среды .NET Framework. Поэтому материал этой части книги имеет отношение не только к языку С#, но и ко всей среде .NET Framework в целом.

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

Библиотека среды .NET Framework довольно обширна, и поэтому ее полное описание выходит за рамки этой книги. (На самом деле для этого потребовалась бы отдельная и довольно объемистая книга!) Поэтому в части II рассматриваются лишь самые основные элементы данной библиотеки, многие из которых находятся в пространстве имен System. Кроме того, в этой части описываются классы коллекций, а также вопросы организации многопоточной обработки и сетей.

ГЛАВА 21 Пространство имен System

ГЛАВА 22 Строки и форматирование

ГЛАВА 23 Многопоточное программирование. Часть первая: основы

ГЛАВА 24 Много] юточное программирование. Часть вторая: библиогека TPL

ГЛАВА 25 Коллекции, перечислители и итераторы

ГЛАВА 26 Сетевые средства подключения к Интернету

ПРИМЕЧАНИЕ

Классы ввода-вывода подробно рассматривались в главе 14.

ГЛАВА 21 Пространство имен System

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

Кроме того, в пространство имен System входит много вложенных пространств имен, поддерживающих отдельные подсистемы, например System.Net. Некоторые из этих пространств имен рассматриваются далее в этой книге. А в этой главе речь пойдет только о членах самого пространства имен System.

Члены пространства имен System

Помимо большого количества классов исключений, в пространстве имен содержатся приведенные ниже классы.

ActivationContext

Activator

AppDomain

AppDomainManager

AppDomainSetup

Applicationld

Applicationldentity

Array

Asse m b ly Loa d Eve ntA rgs

Attribute

AttributeUsageAttribute

BitConverter

Buffer

CharEnumerator

CLSCompliantAttribute

Console

ConsoleCancelEventArgs

Co ntext Bo u n d 0 bj ect

Co ntextStat i cAttri b ute

Convert

DBNull

Delegate

Enum

Environment

EventArgs

Exception

FileStyleUriParser

FlagsAttribute

FtpStylellri Parser

GC

GenericUriParser

GopherStylellri Parser

HttpStyleUri Parser

Lazy<T>

Lazy<T, TMetadata>

LdapStyleUriParser

LoaderOptimizationAttribute

Local DataStoreSlot

Ma rsha 1 By RefO bject

Math

MTATh read Attribute

MulticastDelegate

NetPipeStylellriParser

NetTcpStylellriParser

NewsStyleUriParser

NonSerializedAttribute

Nullable

Object

ObsoleteAttribute

Ope rati ngSystem

Pa ra m Ar rayAtt r i b ute

Random

ResolveEventArgs

SerializableAttribute

STAThreadAttribute

String

StringCom parer

ThreadStaticAttribute

TimeZone

TimeZonelnfo

TimeZonelnfo.AdjustmentRule

Tuple

Tuple<...> (различные формы)

Type

Unhandled Exception EventArgs

Uri

UriBuilder

Uri Parser

UriTemplate

UriTemplateEquivalenceComparer

UriTemplateMatch

UriTemplateTable

UriTypeConverter

ValueType

Version

WeakReference

Ниже приведены структуры, определенные в пространстве имен System.

Arglterator

ArraySegment<T>

Boolean

Byte

Char '

ConsoleKeylnfo

DateTime

DateTimeOffset

Decimal

Double

Guid

Int 16

Int32

Int64

IntPtr

ModuleHandle

Nullable<T>

RuntimeArgumentHandle

RuntimeFieldHandle

RuntimeMethodHandle

RuntimeTypeHandle

Sbyte

Single

TimeSpan

TimeZonelnfo.TransitionTime

Typed Reference

Uint16

Ulnt32

Ulnt64

U IntPtr

Void

_AppDomain

lappDomainSetup

lAsyncResult

ICIoneable

IComparable

IComparable<T>

IConvertible

1 Custom Formatter

IDisposable

IEquatable<T>

IFormatProvider

IFormattable

IObservable<T>

IObserver<T>

IServiceProvider

Ниже приведены делегаты, определенные в пространстве имен System.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*