2016-09-28 5 views
4

私はC#とコーディングに新しいので、私の無知を許してください。私は研究を試みましたが、私が探しているものは、おそらくC++では "ポインタ"と呼ばれていますが、C#では利用できないようです。私はリストからオブジェクトを "選択されたオブジェクト"として割り当て、それを "解放"するまで周りを回ることができるフィールドまたはプロパティが必要です。私はこれを試してみた:私がやっていることを達成するより正しい方法がありますか?

Entity GrabbedEntity; 

    List<Entity> Entities; 

    if (mouseDown) 
     GrabbedEntity = Entities[3]; 

    if (mouseUp) 
     GrabbedEntity = null; 

私は何を達成しようとしていることは基本的にはちょうど私が「grabbedEntity」割り当てられたオブジェクトを解放し、そして実際に「実体[3]」NULL値を作っていない、私はまだ欲しいですしかし、grabbedEntityの値を変更できるようにするには(mouseDownと= Entities [3]は簡潔にするため、状況に応じてリスト内の任意のオブジェクトにすることができます)。どのように私はそれを中心に活動してきたこれです:これは私がそれをするつもり正確に私が行うことができます割り当てられている間、私は、私の「エンティティ」リスト内のオブジェクトに「GrabbedEntity」を割り当てることができます動作します

List<Entity> Entities; 

List<Entity> _grabbedEntityList = new List<Entity>(); 
Entity GrabbedEntity 
{ 
    get 
    { 
     if (_grabbedEntityList.Count < 1) return null; 
     else return _grabbedEntityList[0]; 
    } 
    set 
    { 
     if (value == null) _grabbedEntityList.Clear(); 
     else 
      _grabbedEntityList.Clear(); 
      _grabbedEntityList.Add(value); 
     } 
    } 
} 

私がそれをリリースしたいのであれば、それをnullに設定するだけですが、実際にすでに存在しているものを回避しようとしているような気がします。すべての応答ありがとう。

+0

あなたは、選択したアイテムをリストに入れたいと言っていますが、それが本質的に選択されている間は、リストの読者には読み取り専用または表示されません。 – mbrdev

+0

あなたのリストは複数の要素を持つことが可能ですか? –

+2

あなたの最初のアプローチがあなたのためにうまくいかないのはなぜですか? – poke

答えて

4

あなたの最初のアプローチはうまくいくはずです。

あなたは「これはどうしていますか?」と言っていますが、回避する必要があると感じていることを教えてくれませんでした。 GrabbedEntity = null;Entities[3];にnullを設定する可能性があると懸念される場合は、そうではありません。実際に試してみると、そうではないことがわかります。

get{}set{}の2つ目のアプローチに関して、私はあなたが何をしようとしているのか、またこの混乱した混乱がそれを達成するためにどのように考えているのかわかりません。

+2

鈍いことをありがとう、私に戻ってさらに見えるように私を押した。私は何が間違っていたか把握することができました。何かが私のエンティティをマウスを解放すると消えてしまっていました。私はそれが無能化だと思っていました。最初は間違ってオブジェクトを選択してしまいました。 – vicdotexe

+0

C - :=あなたが個人的にそれを取ってくれてうれしいです。 –

関連する問題