元のコードと説明は以下の通りです:C#このキーワード - 私の理解
この参照はインスタンス自体を参照しています。次の例では、 は、方法は相手のチームメイトのフィールドを設定するためにこれを使用しています結婚:
public class Panda
{
public Panda Mate;
public void Marry(Panda partner)
{
Mate = partner;
partner.Mate = this;
}
}
私は、次のコードを作成しました:
public class Panda
{
public Panda Mate;
public void Marry(Panda partner)
{
Mate = partner;
partner.Mate = this;
}
}
class Program
{
static void Main(string[] args)
{
Panda PA1 = new Panda();
Panda PA2 = new Panda();
PA1.Marry(PA2);
}
}
を、私は次のように私のコードに基づいて図を描きました。
だから、私の理解に基づいて、PA1のメイトは現在、ヒープ内のPA2のオブジェクトを指し、およびPA2のさMateは現在、ヒープ内のPA1のオブジェクトを指しています。
この状況でこのキーワードを正しく理解していますか?ご協力ありがとうございました。
はい、あなたは正しいです。あなたはこの質問を閉じることができます –
あなたの理解にはあまり重要ではありませんが、あなたの図は一般的な誤解を示唆しています。Marryメソッドのコードは、クラスの2つ(または3つまたはn)インスタンス間では複製されませんが、両方のインスタンスには、Marryメソッドのコードが存在するメモリの領域を指す隠しフィールド(メソッドテーブル)があります。 Pandaクラスのインスタンスで使用されます。 – Steve
こんにちは@Steve、ありがとうございます。私はC#の初心者ですので、コード自体について多くの誤解があります。可能であれば、わたしの理解を助けるための答えを説明するための簡単な図を描くようお願いしますか? – user8778584