我在做什麼現在:是否有可能:在1行代碼內,如果(index> list.Count)增加索引1並回繞爲0?
index++;
index %= list.Count;
我想將它們合併到一個快速線,是這樣的:
++index %= list.Count;
但是,編譯器不會讓我。
我很想知道:
- 是否有可能合併這2進1快,易於讀取行?
- 解釋爲什麼我在做什麼不工作,IIRC我用來做在C所有的時間/ C++
感謝您的時間!
我在做什麼現在:是否有可能:在1行代碼內,如果(index> list.Count)增加索引1並回繞爲0?
index++;
index %= list.Count;
我想將它們合併到一個快速線,是這樣的:
++index %= list.Count;
但是,編譯器不會讓我。
我很想知道:
感謝您的時間!
我會是略微如果第一個版本在C或C++中工作,但它經常令我感到驚訝。它在C#中不起作用的原因是%=
運算符的左側必須是變量,並且表達式++index
未被分類爲變量 - 這是的值。
儘管如此,我不會稱之爲「易讀」行。什麼是非常易於理解是這樣的:
index = (index + 1) % list.Count;
無需複合賦值運算符的。
我認爲你需要這樣的:
index = (index + 1) % list.Count;
這第一個增量索引,然後執行模量,總是與你的列表中選擇有效指數結束了。
關於您的是否有可能將這2個合併爲一個快速易讀的行?,最短的代碼並不總是最好的可讀代碼。我認爲上述內容足夠明確,不會太長。我認爲最好的選擇。 (這將是最短的選項index = ++index % list.Count;
,但設置索引的用法是兩次?)
或者你可以完全避免模運算(儘管這不可能在運行時產生可測量的差異):if( ++ index == list.Count)index = 0;' –