-1

次のオブジェクトがあるとします。

ZeroObject A = new ZeroObject("A");
ZeroObject B = new ZeroObject("B");
ZeroObject C = new ZeroObject("C");
ZeroObject D = new ZeroObject("D");

私がする時:

B = A;

コードのどこかに のB参照があるはずAですよね?

それで:

C = B;

つまり、Cの参照ですBC使用せずに参照を与える方法はありますかA:

C = A;
4

6 に答える 6

1

ZeroObjectまず、クラスであると仮定しています。そうでない場合は、この回答を無視してください。

私がする時

B = A;

コードのどこかに、

B should have a reference of A, right?

Bは と同じ値になるということAです。の値をAさらに変更しても(別のオブジェクトを参照するようにするなど)、 には影響しませんAAただし、との両方が参照するオブジェクト内のデータを変更するBと、どちらの参照からもその変更を確認できます。

詳細については、参照型と値型に関する私の記事をお読みください。

使用せずに C に A の参照を与える方法はありますか

C = A;

C#で?

まあ、あなたがそれを行うことができる奇妙な方法があります。例えば:

public void SetValue<T>(out T target, T value)
{
     target = value;
}

...

SetValue(out C, A);

...しかし、なぜこれをやりたいのかは不明です。

于 2012-10-01T13:42:25.027 に答える
1

未定義の「ZeroObject」を発明することが役立つとは思えないので、先に進んで文字列を使用します。

string A = "A";
string B = "B";
string C = "C";

//Values are now A, B, C

B = A;

//Values are now A, A, C

C = B;

//Values are now A, A, A
于 2012-10-01T13:46:42.657 に答える
0

「Cに参照を与える」と言って、あなたが正確に何を意味するかによって異なります。

これが「同じメモリ位置を指している」ということであれば、それらを互いに割り当てれば十分でしょう。

そう

    B = A;
    C = B

CA同じメモリ空間を指します。

しかし、これは正直なところ、非常に奇妙な作業方法です参照を割り当てるだけC=Aです。

これが探しているものでない場合は、明確にしてください。

于 2012-10-01T13:42:10.097 に答える
0

ZeroObject は独自のクラスですか?

プログラム的には、子オブジェクトなどの参照オブジェクトが必要なようです (この場合は何と呼ばれても構いません)。

したがって、理想的には、ZeroObject クラスに、ZeroObject 型の別のプロパティが必要です - ReferenceObject (または任意の名前) という名前で、サブオブジェクトを割り当てます。

いえ

public class ZeroObject
{
    //Properties
    ZeroObject ReferenceObject { get; set; }
}

ZeroObject A = new ZeroObject("A");
ZeroObject B = new ZeroObject("B");

A.ReferenceObject = B;

次に、 でアクセスBするだけですA.ReferenceObject

于 2012-10-01T13:43:13.283 に答える
0

ZeroObject対応するプロパティが必要です

public class ZeroObject
{
    public ZeroObject (string name)
    {
        Name = name;
    }

    public ZeroObject Parent { get; set }

    public string Name { get; private set; }
}

今、あなたは書くことができます

ZeroObject A = new ZeroObject("A");
ZeroObject B = new ZeroObject("B");
ZeroObject C = new ZeroObject("C");
ZeroObject D = new ZeroObject("D");

B.Parent = A;
C.Parent = B;
D.Parent = C;
于 2012-10-01T13:46:20.817 に答える
0

参照せずに同じオブジェクトが必要な場合は、そのリンクを確認して、その基本的なソリューションを使用してください。

オブジェクトのディープ クローニング

于 2012-10-01T13:46:27.213 に答える