IEnumerable<> 内のオブジェクトのプロパティを更新します。
-
21-09-2019 - |
質問
私は特殊な種類の実験に使用する必要があるソフトウェアを開発中です。
実験は以下を使用して実行されます。
1) 「チップ」(基本的には既知の寸法の XY グリッド)。2) 各チップには「電極」が含まれており、チップ上の X および Y 座標と固有の ID によって識別されます。各電極はサンプルを保持するか保持しないこともでき、これは単純なブール値で示されます (これはバイオセンシング チップです)。
このハードウェアを C# で表すオブジェクトがあります。
次に、実験でハードウェアを使用する必要があります。
1) 「ExperimentStep」オブジェクトを保持する IEnumerable を公開する「Experiment」があります。2) 「ExperimentStep」には名前と、特に関係する「電極」の限定されたリストが保持されます。
一部の実験ステップは同時に実行でき、電極の「HasSample」プロパティを変更する可能性があります。したがって、「ExperimentStep」を実行するときは、常に最初の「HasSample」プロパティが何であるかを知っておくとよいでしょう。
ここに私の問題があります。
「Electrode」オブジェクトを「ExpermentStep」に渡すだけの場合、それらはおそらく Value によって渡されるでしょう...「ExperimentStep」を実行するたびに、そのステップで使用される「Electrodes」のリストに「HasSample」の最新の値が保持されるように、一意の電極への参照を保持する IEnumerable を作成することは可能ですか?これにはポインタを使用する必要がありますか??C++ に関する私の限られた知識から、この言語ではこれは簡単なことであると予想します (ほとんどの場合ポインターを使用して作業するため)。しかし、C# についてはまったくわかりません (経験が足りません)。
解決
で C#クラスは参照型です。この手段は、クラスのインスタンスのリストを作成し、その後も別のリストにインスタンスを追加する場合、その同じアイテムという。各リストには、参照を保持します。だから、その効果をyesにすることができますIEnumberableを使ってアイテムます。
他のヒント
参照型と値型の違い、および C# における値渡しの実際の意味を理解していないのではないかと思います。
仮定すると Electrode
はクラスであるため、そのインスタンスのプロパティを変更でき、それらの変更は同じオブジェクトへの参照を介して表示されます。
私 強く 多くの運用コードを開発する前に、.NET の型システムをしっかりと理解することをお勧めします。何が起こっているのかを理解していないと、悲惨な結果が生じる可能性があります。
これらのトピックに関する私の記事をいくつか紹介します。
...ただし、優れた C# 入門書も購入することをお勧めします。