C# (.NET) では、2 つのループが発生しました ->
A for ... do:
{
B for do:
{ something}
something that evaluates all "for"s in B loop
}
内側のループに Parallel.For を使用しましたが、これらのループの結果は、アプリケーションを実行するたびに異なりました。何らかの非同期作業の結果かもしれないと思いますが、VS 2005 Express でそれを確認する方法がわかりません。次に、すべての作業を行います。
編集(より具体的な情報を要求するコメントのため):
for (int i = 0; i < max; i++) //Pre Vsetky retazce ..
{
prefix = 0;
tempsame.Clear();
bool spracovane = true;
int dlzkaI = Items[i, 1].Length;
if (Items[i, 2] != "1") { spracovane = false; }
if (spracovane == false)
// Parallel.For(0, max, delegate(int j)
// {
for (int j = 0; j < max; j++) //Pre kazdy dalsi
{
int dlzkaJ = Items[j, 1].Length;
if (dlzkaJ >= dlzkaI)
{
CompareInfo myComp = CultureInfo.InvariantCulture.CompareInfo;
bool isprefix = myComp.IsPrefix(Items[j, 1], Items[i, 1]);
bool issame = false;
if (dlzkaJ.Equals(dlzkaI)) issame = true;
if (isprefix == true && issame == false)
{
prefix++;
}
else if (isprefix == true && issame == true && prefix == 0)
{
tempsame.Add(Items[j, 0]);
}
}
}
if ((prefix==0) && (spracovane==false))
{
Items = UpdateUnique(tempsame.ToArray(typeof(string)) as string[], Items);
unique++;
}
}
要するに、2 つのループは同じ文字列の配列をループし、一意の文字列のみを選択します。つまり、文字列を他の文字列のプレフィックスにすることはできません。
> Car - unique Car - unique Cafeteria -
> unique Automobile - unique Auto - not
> unique - it's prefix of Automobile
> Auto - not unique