2011-01-14 7 views
0

アカウントに「プライマリアカウント」の参照があるアカウントシステムを作成しようとしています。参照はこのオブジェクトのプライマリアカウントを示します。作成時には、デフォルトでは、それを自分のプライマリアカウントに設定したいと思います。C#では、オブジェクトがデフォルトで自身を参照するデータメンバーを持つことは可能ですか?

これはエラーを引き起こしますか?

どのように正確に書きますか?これは「これ」という言葉を使用しますか?

私はOOPに新しいです、助けてくれてありがとう!

+0

**ユーザー**にはプライマリアカウントがありますか? – Simone

+0

いいえ、私は実際にアカウントを1つのアカウントにリンクしています。 :) – James

答えて

4

たぶん

public class Account 
{ 
    private Account _parent; 
    public Account Parent 
    { 
     get { return _parent ?? this; } 
     set { _parent = value; } 
    } 
} 

のようなものが役立つだろうか?

+1

+1:面白いことに、私たちはすべて違った考えを書いてくれました。偉大な心は似ています:) –

+0

おそらく私たちはすべて間違っています;-) –

+0

あなたが私に尋ねるなら、あなたのものは最高です。 –

1

はこれを試していないが、このような作業をする必要があります:

public class MyObject { 
    protected MyObject myObjectInstance; 
    public MyObject MyObjectInstance { 
    get { return (myObjectInstance == null)? this: myObjectInstance; 
    set { myObjectInstance = value; } 
    } 
} 

あなたはそれがしたい正確に何をしMyObjectInstanceと呼ばれる性質を持っている。この方法を。

+0

+1:私たちは皆、違った書き方をしましたが、偉大な心は似ています:) –

1

私はあなたがおそらくAccountインスタンスに親がない示す値nullを使用する方が正しいだろう

private Account _primaryAccount; 
public Account PrimaryAccount 
{ 
    get 
    { 
     if(_primaryAccount == null) 
      return this; 
     return _primaryAccount; 
    } 
    set { _primaryAccount = value; } 
} 
0

のようにあなたの財産を書き込むことによってこれを行うことができるはずだと思います。

お客様のアカウント構成はtree structure(プログラミングで最も一般的なパターンの1つです)です。ツリー構造では、親を持たないノードはルート要素とみなされます。 .NETでは、ノードに「親がない」と言う最も明快な方法は、「親」プロパティからnullを返すことです。

プロパティが現在のインスタンスをその値として返すことは間違っていることは何もありませんが、多少混乱し、ツリー構造で予想される慣習から遠ざかります。

+0

これは実際には見えますが、これは従来の意味での木構造には実際に従っていません。アカウントはどんな種類の連鎖を形成することはありません...親子だけが存在します。ユーザーが自分以外のプライマリを既に持っているアカウントをターゲットにすることを選択した場合、代わりに実際にターゲットアカウントのプライマリが使用されます。親として自分自身を参照する私の選択の理由は、多くの場所で2つのアカウントの親を比較するためです。 nullを使用する場合は、ifステートメントを追加してチェックしてから、 – James

+0

というアカウントを使用してください。だから、この奇妙なケースでは、それが可能ならば自分自身を参照するようにするのが理にかなっていました。単に同じif文を何度も繰り返し書くことをやめてしまいました。しかし、ありがとうございました、そうでなければ助けになったでしょう! – James

関連する問題