關於使用for迴圈

來源:互聯網
上載者:User

有人喜歡使用for作類似while的迴圈:

for(;;) { }

評論:這是一種風格,有一部分人使用,我個人覺得不如while來得直觀。

究竟是++i,還是i++

for (int i = 0; i < arrayA.Length; ++i) { }

for (int i = 0; i < arrayA.Length; i++) { }

以前我使用i++的寫法,後來,看到一些優秀的代碼中,大多使用++i,我就改用++i了。為什麼使用++i,看到過一些理由,但覺得那些理由,不值一提。

使用i, j, k作多層迴圈

for (int i = 0; i < arrayA.Length; ++i) 
{
  Object[] arrayB = arrayA[i];
    for (int j = 0; j < arrayB.Length; ++j)
    {
        Object b = arrayB[j]; //此處需要多加註意,一不留神就會寫成Object b = arrayB[i];
    } 
}

使用i, j, k做多層迴圈時,很容易犯錯誤,如上述代碼中的注釋縮寫的那樣。我參加的程式碼檢閱(Code Review)中,或者開發過程中,經常有同事遇到這種BUG。我也曾經吃過虧,每次編寫i, j, k多層for迴圈時,就會提醒自己,小心,別犯錯誤!

使用for的習慣,除了++i和i++的寫法不同外,還有和if、while等語句一樣的不同寫法,如下:

第一種寫法
a、關鍵字for後面有空格
b、二元運算式左右有空格
c、每個大括弧,單獨佔一行
d、else關鍵字單獨佔一行

for (int i = 0; i < list.Count; ++i)
{
}

第二種寫法:
a、關鍵字if後面有空格
b、二元運算式左右有空格
c、大括弧放在上一句的右邊

for (int i = 0; i < list.Count; ++i) {
}

需要最佳化是,可能你也會採用這種寫法:

int listCount = list.Count;
for (int i = 0; i < listCount; ++i) { }

如果for迴圈中,不會添加或者刪除list的元素,使用這種方式最佳化,可能得到一丁點(可能不值一提)的效能提升。

需要從list中刪除元素時,可能你會使用反序的遍曆。如下:

int listCount = list.Count;
for (int i = listCount - 1; i >= 0; --i) 
{
    if (condition) 
    {
        list.RemoveAt(i);
    }
}

如果list的實現是ArrayList,反序遍曆可能比正序刪除的效能更高一些。

此外,for還有一些其他的使用方式,如:

for (init(); condition(); incement()) { }
for (; i < j; ++i, --j) { };

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.