class Program
{
static void Main(string[] args)
{
Worker worker = new Worker();
worker.Start();
Console.ReadLine();
}
}
Worker類
public Worker()
{
}
public Navigator Navigator;
public Scraper Scraper;
public void ResetVariables()
{
Navigator = new Navigator(this);
Scraper = new Scraper(this);
}
public void Start()
{
ResetVariables();
Navigator.SetHtml();
}
Navigator類
private Worker Worker;
private Scraper Scraper;
public string Html;
public Navigator()
{
}
public Navigator(Worker worker)
{
Worker = worker;
Scraper = worker.Scraper;
}
public void SetHtml()
{
Html = "navigator has changed its html";
Scraper.ReadHtmlFromNavigator(); //CAUSES NULL REFERENCE IF CALLED INISIDE THIS METHOD
}
刮板類
private Worker Worker;
private Navigator Navigator;
public Scraper()
{
}
public Scraper(Worker worker)
{
Worker = worker;
Navigator = Worker.Navigator;
}
public void ReadHtmlFromNavigator()
{
Console.WriteLine("scraper reading html from navigator: " + Navigator.Html);
}
空引用
當我從導航本身我得到一個空引用,但裏面調用Scraper.ReadHtmlFromNavigator()如果我從工人階級調用它,它工作正常:
public void Start()
{
ResetVariables();
Navigator.SetHtml();
Scraper.ReadHtmlFromNavigator();
}
和我得到的輸出:
scraper reading html from navigator: navigator has changed its html
的確,我之前是這麼做的,但是在尋找一種不需要輸入Worker的方法,我每次都需要其他類的東西,但無論如何,我並沒有因爲它看起來很乾淨而感到困擾。 –
@JoaoVitor在我的答案中看到更新如何創建快捷方式 – opewix