在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类,但不知道如何。
答案 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");