将自习引用传递给子类

时间:2011-10-08 01:01:27

标签: c# class self-reference

在C#4.0中(如果可以的话,可以更早),父类如何将自身的引用传递给子类。例如:

class Book
{

    public string bookname = "a";
    public static List<Page> pages = new List<Page>();

    static void Main(string[] args)
    {
        Page pageone = new Page("one");
        pages.Add(new Page("one"));
    }
}
public class Page
{
    Book book;
    public Page(string pagetitle)
    {
        Console.WriteLine(pagetitle);
        Console.WriteLine("I'm from bookname :?");
    }
}

如何让Page识别出哪本书?我正在尝试在构造函数中传递Book类,但不知道如何。

2 个答案:

答案 0 :(得分:5)

您遇到了麻烦,因为您已将图书类作为应用程序的入口点,这意味着您没有实际的图书实例。

尝试这样的事情:

public class Program
{
    static void Main(string[] args)
    {
        Book book1 = new Book();
        book1.AddPage("one");   
    }
}

public class Book
{
    public string Bookname = "a";
    public List<Page> Pages = new List<Page>();

    public void AddPage(string pageTitle)
    {
        Pages.Add(new Page(this, pageTitle));
    }
}

public class Page
{
    Book book;
    public Page(Book b, string pagetitle)
    {
        book = b;
        Console.WriteLine(pagetitle);
        Console.WriteLine("I'm from book '{0}'.", book.Bookname);
    }
}

答案 1 :(得分:4)

只需在Book Page

中添加class字段即可

然后创建一个带有Book参数的重载。

this Book

调用构造函数时,使用object引用Book class
private Book _book;
public Page(Book book, string pagetitle);
{
   this._book = book
}

// Usage in the Book class
Page pageone = new Page(this, "one");