ПриМеЧание
Для.простого.копирования.части.элементов.из.одного.массива.в.другой.имеет.смысл.
использовать.метод.BlockCopy.класса.System Buffer,.который.работает.быстрее.ме-
тода.Array Copy .К.сожалению,.этот.метод.поддерживает.только.примитивные.типы.
и.не.имеет.таких.же.широких.возможностей.приведения,.как.Array Copy .Параметры.
типа.Int32.выражаются.путем.смещения.байтов.внутри.массива,.а.не.при.помощи.
индексов .То.есть.метод.BlockCopy.подходит.для.поразрядного.копирования.со-
вместимых.данных.из.массива.одного.типа.в.другой .К.примеру,.таким.способом.
можно.скопировать.массив.типа.Byte[],.содержащий.символы.Юникода,.в.массив.
типа.Char[] .Этот.метод.частично.компенсирует.отсутствие.возможности.считать.
массив.просто.блоком.памяти.произвольного.типа
Для.надежного.копирования.набора.элементов.из.одного.массива.в.другой.ис-
пользуйте.метод.ConstrainedCopy.класса.System Array .Он.гарантирует,.что.в.случае.
неудачного.копирования.будет.выдано.исключение,.но.данные.в.целевом.массиве.
останутся.неповрежденными .Это.позволяет.использовать.метод.ConstrainedCopy.
в.области.ограниченного.выполнения.(Constrained.Execution.Region,.CER) .Гарантии,.
которые.он.дает,.обусловлены.требованием,.чтобы.тип.элементов.исходного.массива.
совпадал.с.типом.элементов.целевого.или.был.производным.от.него .Кроме.того,.
метод.не.поддерживает.упаковку,.распаковку.или.нисходящее.приведение
Базовый класс System.Array
Рассмотрим объявление переменной массива:
FileStream[] fsArray;
Объявление переменной массива подобным образом приводит к автоматиче-
скому созданию типа
FileStream[]
для домена приложений. Тип
FileStream[]
является производным от
System.Array
и соответственно наследует оттуда все
методы и свойства. Для их вызова служит переменная
fsArray
. Это упрощает ра-
боту с массивами, ведь в классе
System.Array
есть множество полезных методов
и свойств, в том числе
Clone
,
CopyTo
,
GetLength
,
GetLongLength
,
GetLowerBound
,
GetUpperBound
,
Length
и
Rank
.
Класс
System.Array
содержит также статические методы для работы с масси-
вами, в том числе
AsReadOnly
,
BinarySearch
,
Clear
,
ConstrainedCopy
,
ConvertAll
,
Copy
,
Exists
,
Find
,
FindAll
,
FindIndex
,
FindLast
,
FindLastIndex
,
ForEach
,
IndexOf
,
LastIndexOf
,
Resize
,
Reverse
,
Sort
и
TrueForAll
. В качестве параметра они при-
нимают ссылку на массив. У каждого из этих методов существует множество пере-
груженных версий. Более того, для многих из них имеются обобщенные перегру-
женные версии, обеспечивающие контроль типов во время компиляции и высокую
424
Глава.16 .Массивы
производительность. Я настоятельно рекомендую самостоятельно почитать о них
в документации на SDK.
Do'stlaringiz bilan baham: |