不......实际上,this
在您的上下文中是指定义对象SpeakTo
,而不是调用它的对象。
让我们把这种方式:
- 对象
speaker
是类Speaker
定义了SpeakTo
方法,
- 对象
caller
被调用speaker.SpeakTo()
,并
- 对象
whoToTalkTo
是类的其定义了TellMe(string, Speaker)
正如您所见,whoToTalkTo
正在等待Speaker
类实例。然后,speaker
对象正是这样,并且可以自由地通过this
作为参数。
现在我们可以构建这些关系越来越明显的更大的示例:
class Speaker
{
public int Data { get; set; }
public void SpeakTo(Elephant whoToTalkTo, string message)
{
// Passing current instance of this class as the argument
whoToTalkTo.TellMe(message, this);
}
}
这Speaker
类包含一块的状态。现在,我将使用whoToTalkTo
对象更改状态:
class Talker
{
public void TellMe(string message, Speaker speaker)
{
speaker.Data = message.Length;
}
}
此实现改变了传递给它一个特定的对象的状态。
现在最终呼叫者来的图像,所述一个实际上选择其将要进行TellMe()
方法Speaker
对象:
class Caller
{
public void DoWork()
{
Talker talker = new Talker();
Speaker one = new Speaker();
Speaker two = new Speaker();
// This sets one.Data to length of "something"
one.SpeakTo(talker, "something");
// This sets two.Data to length of "else"
two.SpeakTo(talker, "else");
Console.WriteLine(one.Data);
Console.WriteLine(two.Data);
}
}
此代码将打印值9和图4,这表明whoToTalkTo
实际上一直在修改两个不同对象的状态。
'this'指的是物体本身。例如:'myFoo.speakTo(...)'将具有'this'等于'myFoo' – CollinD