2013-12-09 130 views
1

這兩種聲明(引入)變量的方式有什麼實際區別(速度,內存)嗎?哪一個更好?C#變量聲明

實施例1:

for (int i = 0; i < myObjects.Length; i++) 
{ 
    MyObject m = myObjects[i]; 
} 

實施例2:

MyObject m = null; 

for (int i = 0; i < myObjects.Length; i++) 
{ 
    m = myObjects[i]; 
} 

感謝。

+1

如果你要使用內部的對象循環只有它的好處,只有它。 http://stackoverflow.com/questions/8803674/declaring-variables-inside-or-outside-of-a-loop –

+0

對不起,我應該搜索更多的前面的問題。這似乎已經在先前的案例中得到了回答。 – user3057255

回答

1

示例1使得m在內存中僅在for循環的範圍內爲「活動」。

示例2使得m在for循環完成執行後保持佔用內存。

我將與例1走,這是爲什麼: Declaring variables inside or outside of a loop(我真的不能告訴你,詳細,迫使你閱讀的鏈接。)

1

Performance-wise兩者都編譯爲相同的IL,所以沒有區別。

第一個更好,因爲你的意思是在每次迭代中都有一個新的對象。如果環路條件失敗,也不需要有對象

+1

你爲什麼認爲他們編譯到相同的IL? –