不......實際上,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