Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы C#.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
609.28 Кб
Скачать

Основы c#. Урок 63. Сериализация класса

Для того, чтобы класс стал сериализуемым, достаточно объявить его с атрибутом Serializable. Например, вот так:

namespace Serial

{

[Serializable()]

class Worker

{

public int age;

public int yoe;

}

}

После этого экземпляр класса можно, например, целиком сохранять в файл и читать из файла (именно экземпляр класса целиком, а не поля класса по отдельности). Вот пример такого использования сериализуемого класса:

using System;

using System.IO;

using System.Runtime.Serialization;

using System.Runtime.Serialization.Formatters.Binary;

namespace Serial

{

class Program

{

static void Main(string[] args)

{

// Задаем экземпляр класса.

Worker w = new Worker();

w.age = 22;

w.yoe = 2;

// Сериализуем класс.

FileStream fs = new FileStream("1.txt", FileMode.Create, FileAccess.Write);

IFormatter bf = new BinaryFormatter();

bf.Serialize(fs, w);

fs.Close();

// Десериализуем класс.

fs = new FileStream("1.txt", FileMode.Open, FileAccess.Read);

Worker w1 = (Worker)bf.Deserialize(fs);

Console.WriteLine("age: " + w1.age + ", yoe: " + w1.yoe);

fs.Close();

}

}

}

Вполне естественно, что приведенный пример выведет на экран "age: 22, yoe: 2".

Основы c#. Урок 64. Класс BitArray

Класс BitArray предназначен для хранения набора битов. Он находится в пространстве имен System.Collections. Фактически в этом классе хранятся значения логического типа.

Этот класс предоставляет стандартный набор операций для работа с битами - логические И, ИЛИ и т. п. Кроме того, в классе предусмотрена возможность работы с отдельными битами набора.

Вот пример использования этого класса:

static void Main(string[] args)

{

// Объявляем экземпляры BitArray.

BitArray ba0 = new BitArray(new bool[] {true, false, false, true});

BitArray ba1 = new BitArray(4);

// Используем индексаторы для заполнения.

ba1[0] = false;

ba1[1] = false;

ba1[2] = false;

ba1[3] = true;

// Показ первоначальных значений.

ShowBitArray("ba0", ba0);

ShowBitArray("ba1", ba1);

// Or, And, Not и Xor.

ShowBitArray("Or", ba0.Or(ba1));

ShowBitArray("And", ba0.And(ba1));

ShowBitArray("Not", ba0.Not());

ShowBitArray("Xor", ba0.Xor(ba1));

}

// Вспомогательный метод для показа содержимого BitArray.

static public void ShowBitArray(string desc, BitArray bitArray)

{

Console.Write(desc + ": ");

foreach (bool b in bitArray)

{

Console.Write(b + " ");

}

Console.WriteLine();

}

Пример достаточно ясен из комментариев.

Обратите внимание, что методы Or, And, Not и Xor изменяют экземпляр BitArray, к которому они применяются (недаром это методы экземпляра).

Из других полезных методов и свойств следует отметить еще Set и Get (действуют аналогично индексатору [] - т. е. позволяют добраться до отдельных элементов нашего BitArray), SetAll (позволяет установить все элементы BitArray в true или в false), Length (возвращает число элементов).