Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > ошибки в программе с сериализацией


Автор: ArniLand 18.5.2010, 19:47
Написал программу которая выводит информацию о книге, серийный номер книги, подсчитывает общую стоимость книг и увеличивает стоимость книг на определенный процент.  В программе должен был использовать сериализацию. При компиляции выдает ошибки, не могу понять что не так. Помогите исправить пожалуйста их.


Ошибки:
Цитата

D:\Documents\Visual Studio 2008\Projects\laba 2.5 sharp\laba 2.5 sharp\Program.cs(26,24): error CS0128: A local variable named 'formatter' is already defined in this scope
D:\Documents\Visual Studio 2008\Projects\laba 2.5 sharp\laba 2.5 sharp\Program.cs(27,20): error CS0128: A local variable named 'sBook' is already defined in this scope
D:\Documents\Visual Studio 2008\Projects\laba 2.5 sharp\laba 2.5 sharp\Program.cs(29,18): error CS0128: A local variable named 'obj' is already defined in this scope


Код программы:
Код

//Book.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace laba_2._5_sharp
{
    [Serializable]
    public class Book
    {
        public string SerialNumber;
        public string NameBook;
        public double PriceBook;
        public uint CountBooks;

        public Book()
        {
            SerialNumber = "n\a";
            NameBook = "n\a";
            PriceBook = 0;
            CountBooks = 0;
        }

        public void ChangePrice(float percent)
        {
            PriceBook = PriceBook * Convert.ToDouble(percent / 100);
        }

        public double TotalPrice()
        {
            return PriceBook * CountBooks;
        }
    }
}

//Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

namespace laba_2._5_sharp
{
    class Program
    {
        static void Main(string[] args)
        {
            Book obj = new Book();
            obj.NameBook = "Вася Пупкин";
            obj.SerialNumber = "453agr56";
            obj.PriceBook = 4.7;
            obj.CountBooks = 5;
            BinaryFormatter formatter = new BinaryFormatter();
            Stream sBook = new FileStream("Books.txt", FileMode.CreateNew,
                FileAccess.Write, FileShare.None);
            formatter.Serialize(sBook, obj);
            sBook.Close();

            IFormatter formatter = new BinaryFormatter();// жалуется на эту строку
            Stream sBook = new FileStream("Books.txt", FileMode.Open,
                FileAccess.Read, FileShare.Read);
            Book obj = (Book)formatter.Deserialize(sBook);// жалуется на эту строку
            sBook.Close();// жалуется на эту строку

            Console.WriteLine("1: {0}", obj.NameBook);
            Console.WriteLine("2: {0}", obj.SerialNumber);
            Console.WriteLine("3: {0}", obj.PriceBook);
            Console.WriteLine("4: {0}", obj.CountBooks);
        }
    }
}




 















    




Автор: mrbrooks 19.5.2010, 08:27

Компилятор  какбэ намекает на объявления двух локальных переменных с одинаковыми именами.
Вот имена героев:

Цитата

58 стр - BinaryFormatter formatter 
64 стр - IFormatter formatter

59 стр - Stream sBook
65 стр - Stream sBook

53 стр - Book obj
67 стр - Book obj


Так, есесно, делать нельзя

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)