我正在研究this
的用法,我想至少部分地了解它,例如何时解决歧义并从“当前”类调用方法,但我正在阅读的书中有一个例子(首先C#)让我很难受:
public void SpeakTo(Elephant whoToTalkTo, string message) {
whoToTalkTo.TellMe(message, this);
}
在这种方法中,可以肯定地说
this
具有始终引用任何调用方法SpeakTo()
的对象的功能,而不管调用被写入哪个类? 最佳答案
在此方法中,可以肯定地说“ this”具有始终引用调用该方法“ SpeakTo()”的任何对象的功能,而不管调用是在哪个类中编写的?
不。 this
不引用调用SpeakTo
的对象。它指的是在其上调用SpeakTo
的对象。
我将使用一些代码来阐明这一点
class Foo {
public static void Main(String[] args) {
var foo = new Foo();
foo.MyMethod();
}
public void MyMethod() {
var bar = new Bar();
bar.SpeakTo(anElephant, "Hello");
}
}
class Bar {
public void SpeakTo(Elephant whoToTalkTo, string message) {
whoToTalkTo.TellMe(message, this);
}
}
根据您的陈述,
this
引用在main方法中创建的foo
变量。不是这种情况。 this
实际上是指bar
。即方法名称之前的对象。