2016-05-26 8 views
1

私のプロジェクトでは何か変なことがあります。値を変更するコードが作成されていないのに、オブジェクト値の1つが変化しているように見えます。別のフォーム/オブジェクトに渡されてそこに変更された後の "元の"オブジェクトの変数の変更

しかし、このオブジェクトは、変数が実際に変更されている別のフォームに渡されます。私はオブジェクトが他のオブジェクト/フォームにどのように渡されたのか誤解していますが、それはコピーではなく、(潜在的に)いくつかのレイヤーからのオリジナルへのリンクです。

+1

重要な情報:[値の種類と参照の種類](https://msdn.microsoft.com/en-us/library/t63sy5hs.aspx) – Plutonix

答えて

1

はい、オブジェクト(インスタンス)は、そのクラスの新しい各テンプレートへの参照です。したがって、オブジェクトを渡すことは、ポインタまたは参照を渡すことを意味します。 逆の並べ替えは、スタックに全体の構造体を渡す値型の構造体になります。

+0

オブジェクトは決して元の場所に戻されることはありませんが、そのオブジェクトの任意のインスタンスに対して行われた値の変更は、それが「チェーン」のどこにあるかに応じて、前方および後方の両方をフィルタリングします。 – Takarii

+0

今混乱します。オブジェクトのインスタンス?新しいオブジェクトをクラスからインスタンス化します。このオブジェクトを別のフォームに(refで)渡します。このフォームがインスタンスのプロパティを変更した場合、同じインスタンス(=オブジェクト)であるため、作成スコープ内で変更されます。あなたがフィルターと前方/後方で何を意味するかは分かりません。サンプルコードを試してみてください。 –

+0

フォーム1はオブジェクトを作成し、フォーム2に渡し、データを使用してデータをフォーム3に渡します(一連のウィンドウを想像してください)。オブジェクトの値が変更された場合(フォーム3では、 )それは他のフォームにフィルタを変更しますか? – Takarii

関連する問題