2017-07-24 15 views
-2

我有一個brainfart和似乎想法如何替換這個「while」爲可接受的模擬將使用相同的結果。我嘗試的每件事都會使這個函數產生不準確的結果(???),這讓我很生氣。用可接受的替代替換「while」語句

public void AllDecendantsList(Transform transform) 
{ 
    List<Transform> tempList = new List<Transform>();; 
    int CurrentTransformIndex = tempList.Count; 
    foreach (Transform t in transform) 
    { 
     if (condition) 
     { 
      //stuff 
      this.myDict.Add(t.gameObject, value); 
     } 
     tempList.Add(t); 
    } 
    while (CurrentTransformIndex < tempList.Count) 
    { 
     Transform currentTransform= tempList[CurrentTransformIndex++]; 
     if (currentTransform.childCount > 0) 
     { 
      foreach (Transform t2 in currentTransform) 
      { 
       if (condition) 
       { 
        //stuff 
        this.myDict.Add(t2.gameObject, value); 
       } 
       tempList.Add(t2); 
      } 

     } 
    } 
} 

任何提示將不勝感激。

+0

什麼是'childCounter'的目的,在你的程序?你初始化它,你更新它,你不讀它。你從未讀過的變量的功能是什麼?更一般地說:如果它沒有被破壞,那麼你爲什麼試圖修復它? –

+0

爲什麼有一個叫做returnValue的變量永遠不會被返回?這段代碼似乎是故意難以理解的。 **首先讓您的代碼更易於理解**。 –

回答

0

只是另一種方法呢?您始終可以執行隱式轉換,只需設置一個等於CurrentTransformIndex的整數。

int i = CurrentTransformIndex; 
for(i; i < returnValue.Count; i++) 
    { 
    //Do something 
    } 

希望這有助於

+0

是的,我綁定,但爲了上帝的愛,它給了我不正確的輸出數據。我很困惑。原創作品。然而,我不能使用原創,因爲我不完全在香草/原始環境和我使用的編譯器/反編譯器將它變成這個混亂https://pastebin.com/6yCzFqVe – Digika

+0

這可能是因爲你設置CurrentTransformIndex相等在foreach循環運行之前添加到tempList.Count(並添加一個對象「Transformation」)。嘗試在foreach循環之後設置CurrentTransformIndex或者在foreach循環之後設置i = tempList.Count。讓我知道如果這樣的作品 – Yahtzee

+0

哦,我想這可能是因爲我在迭代時向列表中添加了新條目。該死的,爲什麼它在原來的工作呢? – Digika