C#中的“this”关键字

时间:2016-03-14 04:42:58

标签: c#

界面:

public interface ISubject
{
    void registerObserver(IObserver o);
    void removeObserver(IObserver o);
    void noifyObservers();
}

public interface IObserver
{
    void update(float temp, float humidity, float pressure);
}

这是课程

public class CurrentConditionsDisplay : IObserver
    public float temperature;
    public float humidity;
    public ISubject weatherData;

    public CurrentConditionsDisplay(ISubject weatherData)
    {
        this.weatherData = weatherData;
        weatherData.registerObserver(this);
    }
}

registerObserver函数的参数是IObserver,但在构造函数中使用:

weatherData.registerObserver(this);

“this”关键字是什么意思?我知道“this”关键字是指该类的当前实例,但在这种情况下,“this”关键字是什么意思?

2 个答案:

答案 0 :(得分:1)

类CurrentConditionsDisplay实现了IObserver,它将this关键字在其自己的构造函数中传递给weatherData.registerObserver,后者依赖于实现IObserver的对象实例。

它也可以是依赖的模式,将此对象注入到weatherData对象中,该对象在创建时等待IObserver的实例。

答案 1 :(得分:0)

也作为答案发布:

CurrentConditionsDisplay由其构造函数实例化,该构造函数也将自身传递给weatherData.registerObserver方法。您可以在方法中传递CurrentConditionsDisplay,因为它实现了IObserver接口。