1

foreach ループ内で整数をインクリメントするにはどうすればよいですか (C++ のように)

selectIndexこれは私のコードですが、ループの反復ごとに整数をインクリメントしません。

var list = new List<string>();
int selectIndex = 0;

foreach(TType t in Gls.TTypes)
{
    selectIndex = Gls.TType.Name == t.Name ? selectIndex++ : 0;
    list.Add(t.Name);
}

次のように動作しました:

var list = new List<string>();
int selectIndex = 0;
int counter = 0;
foreach(TaxType t in Globals.TaxTypes)
{
    selectIndex = Globals.TaxType.Name == t.Name ? counter : selectIndex;
    counter++;

    list.Add(t.Name);
}

目的は、UIPickerView で一致するアイテムを選択することでした。

すべての貢献に感謝します!

4

7 に答える 7

3

ここで使用しているパターンは恐ろしいものです。前置インクリメントと後置インクリメントは、呼び出された値を変更するため、結果をコピーしても意味がありません (ちなみに、後置インクリメントが発生する前に値をコピーしているため、機能しません)。

@Vilx-や@KarthikTのようなソリューションを使用できますが、私の意見では、すべてを1行に詰め込もうとするのではなく、

if(Gls.TType.Name == t.Name) 
  selectIndex++;
else selectIndex = 0;

誤解しないでください - 私は条件演算子をよく使います。しかし、私はこの場合はしません。

于 2013-01-17T08:29:58.290 に答える
3

正しい構文を探していると思います...

foreach(TType t in Gls.TTypes)
{
     selectIndex += (Gls.TType.Name == t.Name) ? 1 : 0;
     list.Add(t.Name);
}

また

foreach(TType t in Gls.TTypes)
{
     selectIndex = (Gls.TType.Name == t.Name) ? selectIndex+1 : selectIndex;
     list.Add(t.Name);
}
于 2013-01-17T08:32:19.190 に答える
3

ということですか

selectIndex += (Gls.TType.Name == t.Name ? 1 : 0);

?

名前が Gls.TType.Name に等しいオブジェクトのインデックスを検索する場合は、次のコードが役に立ちます。

var list = new List<string>();
foreach(TaxType t in Globals.TaxTypes)
{
    list.Add(t.Name);
}
int selectIndex = list.FindIndex(t => t == Globals.TaxTypes.Name);
于 2013-01-17T08:30:26.583 に答える
2

あなたがそうするときselectIndex = selectIndex++、私はあなたがインクリメントし、その直後にそれを古い値にリセットすることを期待しています..(ポストインクリメント演算子はインクリメントの前に値を返すため)

selectIndex = selectIndex + 1機能的だが不要な代わりにシンプルなものをお勧めします++selectIndex

変更されたステートメントは次のようになります -

selectIndex = Gls.TType.Name == t.Name ? selectIndex+1 : 0;
于 2013-01-17T08:24:48.383 に答える
2

次のように書きます。

selectIndex = Gls.TType.Name == t.Name ? selectIndex+1 : 0;
于 2013-01-17T08:25:21.410 に答える
2

これを試してselectIndex = Gls.TType.Name == t.Name ? ++selectIndex : 0;

ここを参照してください:オペレーターの仕組みについてはMSDN++

于 2013-01-17T08:25:55.997 に答える