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