Передача параметров в конструктор

Рейтинг: 2Ответов: 1Опубликовано: 21.05.2011

Пытаюсь передать параметры в конструктор другого класса, но параметры не передаются. Пробовал ставить public. Идентфикатор доступа не ставится. Подскажите, в чем дело?

public static void CallBook()
{
    string nameBook, authorBook, yearBook, madeBook;
    string[] booksName = Spisok.GetBookName();
    BooksAuthor newBook = new BooksAuthor();
    Console.WriteLine("\nЕсли хотите добавить новую книгу, введите Да."
        + " \nЕсли хотите удалить книгу, нажмите 'q'."
        + "\nЕсли хотите вывести информацию о книге введите R. \nЕсли хотите идити далее нажмите любую клавишу.");
    string otvet;
    otvet = Console.ReadLine();
    switch (otvet.ToString())
    {
        case "да":
        case "ДА":
        case "Да":
        case "дА":
            {
                Console.Write("\nВведите название книги: ");
                nameBook = Console.ReadLine();
                Console.Write("Введите автора книги: ");
                authorBook = Console.ReadLine();
                Console.Write("Введите год издания книги: ");
                yearBook = Console.ReadLine();
                Console.Write("Введите издательство книги: ");
                madeBook = Console.ReadLine();

                BooksAuthor book = new BooksAuthor(nameBook, authorBook, yearBook, madeBook);

                string message = null;
                Books.AddBook(newBook, ref message);
                Console.WriteLine(message);

            }; break;



        case "q":
        case "Q":
        case "Й":
        case "й":
            {
                Console.Write("\nВведите название книги: ");
                nameBook = Console.ReadLine();
                Console.Write("Введите автора книги: ");
                authorBook = Console.ReadLine();
                if (Books.DeleteBook(newBook))
                    Console.WriteLine("Книга удалена из xml документа");
            }; break;

        case "R":
        case "r":
        case "К":
        case "к":
            Console.Write("Введите название книги: ");
            nameBook = Console.ReadLine();
            Console.Write("Введите автора книги: ");
            authorBook = Console.ReadLine();
            foreach (KeyValuePair<string, string> info in Spisok.GetBookDetails(nameBook, authorBook).BookInfo)
            {
                Console.Write("{0}\n", info.Value);
            }
            break;
    }
}

Передается в файл BooksAuthor в конструктор. Заносятся пустые значения:

public BooksAuthor(string nameBook, string authorBook, string yearBook, string madeBook)
{
    this.NameBook = nameBook;
    this.AuthorBook = authorBook;
    this.YearBook = yearBook;
    this.MadeBook = madeBook;
}

Ответы

▲ 2

Пример инициализации полей через конструктор:

using System;

namespace Sample
{
    class Book
    {
        private string title;

        public Book(string title)
        {
            this.title = title;
        }

        public void OutputTitle()
        {
            Console.WriteLine(title);
        }

    }

    class MyProcess
    {
        static void Main()
        {
            Book book = new Book(Console.ReadLine());

            book.OutputTitle();
        }
    }
}

В том вашем коде, который приведен ошибки не видно, поэтому она может быть в том, что

  1. устанавливаются и проверяются разные поля,
  2. вообще проверяются не те данные, что надо.