ボーエンを閲覧しながら、今日は、この記事を参照してください:C#のrefが何であるかを最終的に内と外に渡しますか?転送対象REFの時に質問を使用してください
添付の言葉:
この記事は、午前中に書かれた、あなたはその瞬間に公開したい、ネットオフの会社で、オリジナルの修正部分が欠落しています。
ネットワークは今家だけにして、それを解放し、オフの日です。
ネットワークは今家だけにして、それを解放し、オフの日です。
私たちは皆知っている必要があり、アドレスの参照型を渡すことで、渡された値の型が値ですが、また、関連する記事の多くは、refは、インターネット上で流通が非常に多くの人々は、まだ混乱している、誰もが彼の混乱を離陸していないようでした。
私は最近見ていたCYQ.Dataフレームワーク クラスがアドレスへの参照であることから、話して時間の、アドレス自体がパスである、あなたは、REF転送を行うためのコードを記述する必要があります。
元は以前に変更し理解していない、彼は元のコードが間違っていたと思った、理解してだまされて。
今日の疑問は理解するだけにして彼らの混乱を人々を助ける、とするとき。
ここで私は小さな変化の元の問題の記事に少しのコードを入れて
例を実行します投稿日:
///
<まとめ> /// 通過落下によって http://cyq1162.cnblogs.com /// </要約> クラス プログラム { 静的ボイド メイン(文字列[]引数) { 人P = 新しい新規 人物(「ジョン・ドウ「); 変更(P-); 書き込み(p.Name); // 出力はジョー・スミスジョン・ドウではありません 変更(P-、 」ジョン・ドウ」); 書き込み(p.Name); // 出力はジョン・ドウです 変更(REF P)、 書き込み(p.Name)。
// 出力はWangwuある
; Console.ReadKey()
}
静的 ボイド 変更(人物P) { P = 新しい新規 人物(" ジョン・ドウ" ); } 静的ボイド 変更(人物P、 文字列 名) { p.Name = 名; } 静的ボイド 変更(REF 人P) { P = 新しい新規 人物(" 王ウー" ); } }
// 出力はWangwuある
; Console.ReadKey()
}
静的 ボイド 変更(人物P) { P = 新しい新規 人物(" ジョン・ドウ" ); } 静的ボイド 変更(人物P、 文字列 名) { p.Name = 名; } 静的ボイド 変更(REF 人P) { P = 新しい新規 人物(" 王ウー" ); } }
スクリーンショットは、誰もがここでの方法を見てみましょうどのようにデバッグや疑問です。
実行するF5:
1:我々は、ブレークポイント、コードの最初の行に実行します。
ハイライト:
P-住所:0x044becf8
2:私たちは、内部変更の(P)を実行します
ハイライト:Pアドレスの変更:0x044becd0
簡単に言えば:あなたpとpは、この内部の外には、それがpの外のアドレスには影響しません、同じではありません。
変更備考p値は、それによりコードの最初の行でインスタンスブレークポイントまで実行されないので、値は同じです。
変更備考p値は、それによりコードの最初の行でインスタンスブレークポイントまで実行されないので、値は同じです。
結果出力におけるしたがって最初の行:張
3:変更するために、次の実行(pは、「ジョン・ドウ」)内部関数
ハイライト:ここでのpアドレス内部または0x044becd0に変化し
ますが、それは価値を指すと同じであるので、あなたは値が変更に置くので、「ジョン・ドウは」出てきました。
注:内部と外部のp P同じではないが、しかし点は同じ値です。
ますが、それは価値を指すと同じであるので、あなたは値が変更に置くので、「ジョン・ドウは」出てきました。
注:内部と外部のp P同じではないが、しかし点は同じ値です。
結果出力におけるしたがって最初の行:ジョン・ドウ
4:最後に変更(REF P)内部関数
ハイライト:
ここでのpアドレス、内部および外部のpアドレスが同じ、何も変更はありません
。
次に、新しいオブジェクトにリダイレクトさが、オブジェクトのアドレスの値が変更されました。
注:値を指す外部アドレスp = P内部アドレスは、新しいオブジェクトの値です。
次に、新しいオブジェクトにリダイレクトさが、オブジェクトのアドレスの値が変更されました。
注:値を指す外部アドレスp = P内部アドレスは、新しいオブジェクトの値です。
張:第3段目は、その結果を出力します。
次のように最終的な結果は次のとおりです。
最後の結び目の言葉:
REFを使用して、クラスタイプの場合、同じアドレスを維持するために参照されています。
だから、問題だけに値によって値型のアドレスを渡す参照のタイプを理解していない、正直のタイプは参照渡したときに、ということに留意すべきで、内部のパスの参加者は、新しいアドレスを生成します。
私たちはクラス参照を渡すときに、私は、新しい社内出稼ぎ労働者が注意を払うように注意を払わなければならない使用することを好みます。
だから、問題だけに値によって値型のアドレスを渡す参照のタイプを理解していない、正直のタイプは参照渡したときに、ということに留意すべきで、内部のパスの参加者は、新しいアドレスを生成します。
私たちはクラス参照を渡すときに、私は、新しい社内出稼ぎ労働者が注意を払うように注意を払わなければならない使用することを好みます。
ここでの問題は、パラメータフィールドを渡すように見えますが、REFを取り付けました。
ます。https://my.oschina.net/secyaher/blog/274342で再現