
- •Основы c#. Урок 1. Что такое c#?
- •Основы c#. Урок 2. Что такое net Runtime?
- •Основы c#. Урок 3. Первая программа на c#
- •Основы c#. Урок 4. Переменные языка c#
- •Основы c#. Урок 5. Логические операторы
- •Основы c#. Урок 6. Массивы в c#
- •Основы c#. Урок 7. Операторы if и switch
- •Основы c#. Урок 8. Циклы for и foreach
- •Основы c#. Урок 9. Цикл while
- •Основы c#. Урок 10. Классы в c#
- •Основы c#. Урок 11. Конструкторы классов
- •Основы c#. Урок 12. Наследование
- •Основы c#. Урок 13. Запись в экземпляр базового класса экземпляра производного
- •Основы c#. Урок 14. Вложенные классы
- •Основы c#. Урок 15. Перегрузка бинарных операторов
- •Основы c#. Урок 16. Перегрузка унарных операторов
- •Основы c#. Урок 17. Область видимости
- •Основы c#. Урок 18. Виртуальные функции
- •Основы c#. Урок 19. Абстрактные классы
- •Основы c#. Урок 20. Запрещение наследования или модификатор sealed
- •Основы c#. Урок 21. Статические переменные
- •Основы c#. Урок 22. Статические методы класса
- •Основы c#. Урок 23. Статические конструкторы
- •Основы c#. Урок 24. Закрытые конструкторы или классы без экземпляров
- •Основы c#. Урок 25. Передача параметров переменой длины
- •Основы c#. Урок 26. Строки (класс System.String)
- •Основы c#. Урок 27. Строки (класс StringBuilder)
- •Основы c#. Урок 28. Передача параметров по ссылке и по значению (ref и out)
- •Основы c#. Урок 29. Пример передачи по ссылке
- •Основы c#. Урок 30. Перегрузка
- •Основы c#. Урок 31. Функции класса System.Array
- •Основы c#. Урок 32. Делегаты
- •Основы c#. Урок 33. События
- •Основы c#. Урок 34. Пример класса с событием
- •Основы c#. Урок 35. Введение в атрибуты
- •Основы c#. Урок 36. Пример пользовательского атрибута
- •Основы c#. Урок 37. Параметры командной строки
- •Основы c#. Урок 38. Метод Main в отдельном классе
- •Основы c#. Урок 39. Форматированный вывод
- •Основы c#. Урок 40. Класс System.Object
- •Основы c#. Урок 41. Методы класса System.Object
- •Основы c#. Урок 42. Переопределяем методы класса System.Object
- •Основы c#. Урок 43. Константы
- •Основы c#. Урок 44. Модификаторы доступа
- •Основы c#. Урок 45. Ссылка на текущий экземпляр класса (this)
- •Основы c#. Урок 46. Класс Environment
- •Основы c#. Урок 47. Работаем со специальными папками
- •Основы c#. Урок 48. Получаем список всех дисков
- •Основы c#. Урок 49. Ввод/вывод в c# (System.Io)
- •Основы c#. Урок 50. Классы для работы с папками и файлами
- •Основы c#. Урок 51. Класс Directory
- •Основы c#. Урок 52. Класс File
- •Основы c#. Урок 53. Класс FileSystemInfo
- •Основы c#. Урок 54. Класс DirectoryInfo
- •Основы c#. Урок 55. Перечисление FileAttributes
- •Основы c#. Урок 56. Класс FileInfo
- •Основы c#. Урок 57. Пример: получение имен всех подпапок
- •Основы c#. Урок 58. Класс Path
- •Основы c#. Урок 59. Класс FileSystemWatcher
- •Основы c#. Урок 60. Перечисление NotifyFilters
- •Основы c#. Урок 61. Перечисление WatcherChangeTypes
- •Основы c#. Урок 62. Класс FileSystemWatcher - пример использования
- •Основы c#. Урок 63. Сериализация класса
- •Основы c#. Урок 64. Класс BitArray
- •Основы c#. Урок 65. Класс Stack
- •Основы c#. Урок 66. Класс SortedList
- •Основы c#. Урок 67. Конвертация типов через класс Convert
- •Основы c#. Урок 68. Работа с перечислениями (enum)
- •Основы c#. Урок 69. Использование атрибута Flags для перечисления
- •Основы c#. Урок 70. Использование атрибута Flags для перечисления 2
- •Основы c#. Урок 71. Nullable типы
- •Основы c#. Урок 72. Reflection - динамическое создание кода
- •Основы c#. Урок 73. Reflection - создание enum'ов
Основы 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 (возвращает число элементов).