Exemple #1
0
        /// <summary>
        /// Десериализация
        /// </summary>
        /// <param name="s"></param>
        public void Deserialize(Stream stream)
        {
            using (StreamReader streamReader = new StreamReader(stream))
            {
                ListRandom listRandom = new ListRandom();
                string     readedLine;
                List <Tuple <int, ListNode> > randomIndexList = new List <Tuple <int, ListNode> >();

                while ((readedLine = streamReader.ReadLine()) != null)
                {
                    var a = readedLine.Split('~');
                    if (a.Length != 2)
                    {
                        throw new Exception("Файл повреждён");
                    }
                    randomIndexList.Add(new Tuple <int, ListNode>(Convert.ToInt32(a[0]), listRandom.AddNode(a[1])));
                }

                foreach (var item in randomIndexList)
                {
                    if (item.Item1 > -1)
                    {
                        item.Item2.Random = randomIndexList[item.Item1].Item2;
                    }
                }

                this.Head  = listRandom.Head;
                this.Tail  = listRandom.Tail;
                this.Count = listRandom.Count;
            }
        }
Exemple #2
0
        private static void Main(string[] args)
        {
            try
            {
                ListRandom listRandom = new ListRandom();
                listRandom.AddNode("Первый");
                listRandom.AddNode("Второй");
                listRandom.AddNode("Третий");
                listRandom.AddNode("Чётвёртый");
                listRandom.AddNode("Пятый");
                listRandom.AddNode("Шестой");
                listRandom.AddNode("Седьмой");
                listRandom.AddNode("Восьмой");
                listRandom.AddNodeFirst("Нулевой");
                listRandom.SetRandomListNode();

                foreach (ListNode item in listRandom)
                {
                    Console.WriteLine(item.Data + " " + item.Random.Data);
                }

                using (FileStream fileStream = new FileStream("listRandom.dat", FileMode.Create))
                {
                    listRandom.Serialize(fileStream);
                }

                listRandom.Clear();

                using (FileStream fileStream = new FileStream("listRandom.dat", FileMode.Open))
                {
                    listRandom.Deserialize(fileStream);
                }

                Console.WriteLine("----------------------------");

                foreach (ListNode item in listRandom)
                {
                    Console.WriteLine(item.Data + " " + item.Random.Data);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Ошибка: " + e.Message);
                Console.WriteLine("Объект: " + e.Source);
                Console.WriteLine("Метод, вызвавший исключение: " + e.TargetSite);
                Console.WriteLine("Стэк: " + e.StackTrace);
                Console.WriteLine("====================================");
            }
            Console.ReadKey();
        }