私は、アプリケーションの実行中にいくつかの値を追跡するためのいくつかのリストを持つアプリケーションを持っています。特に、List1、List2、MainListを持ちます。リストのリストを更新する
List1とList2はString型で、MainListは2つの他のリストのリストです。
私のアプリケーションでは、アプリケーションの実行中にリストの値を更新したり変更したりしたいが、これを行う方法が分からない。
ファイルから写真を処理する画像操作アプリケーションです。アプリケーションは、ファイル内のすべての写真のリストの値を処理する必要があります。したがって、すべての写真を繰り返し処理し、各反復でリストを更新するループを作成します。
アルゴリズムは次のようになります。 *最初の画像の場合は、List1に文字列を追加します。次に、List1をMainListに追加します。 *連続する画像ごとに、その画像の文字列をList2に追加します。次に、List2をMainListに追加します。 MainListに追加された最後のListとしてList1を設定します。 Clear List2
問題は、List2データをクリアすると、設定されているList1のデータもクリアされるという問題です。これをどうやって止めることができますか?うまくいけば私のコードを囲みました。私のコードでは、最初の画像がアルゴリズムをテストしていたかどうかを確認するチェックを省略しました。
List<List<String>> MainStringList = new List<List<String>>();
List<String> StringList1 = new List<String>();
List<String> StringList2 = new List<String>();
StringList1.Add("My Car");
StringList1.Add("My Engine");
StringList1.Add("My Wheel");
MainStringList.Add(StringList1);
StringList2.Add("My Flower");
StringList2.Add("My Honey");
StringList2.Add("My Love Heart");
DoStuff(StringList1, StringList2);
private void DoStuff(List<String> StringList1, List<String> StringList2)
{
// Perform some calculations
// Then add to list
MainStringList.Add(StringList2);
int mainStringListCount = MainStringList.Count;
StringList1 = MainStringList[mainStringListCount - 1];
String test1 = StringList1[2];
StringList2.Clear();
String test2 = StringList1[2]; // Problem is here - clears StringList2 as well as StringList1
}
@Hans Moolman StringList2.Clear();あなたがStringList1 = StringList2と言っていない限り、StringList1をクリアしません...しかし、私はあなたのコードでそれを見ません... – NiK
私はC#でそれをやっていると言って申し訳ありません。 _italic StringList2。クリア(); StringList1 = StringList2_と言う場合を除き、StringList1はクリアされません.MemoryListにStringList2を追加し、StringList1を設定してStringList1を設定すると、実際にクリアされます。私はコードを踏んで、StringList2.Clear()の後StringList1の値はすべてnullです。私が途中で間違った何かをしていない限り、私は私がそうであると示唆する何かを見ることができないのですか? – heyred