[英]C# stack frames, curly brackets and performance
大括號是否總是暗示堆棧框架。 示例 1:
{
int b;
}
顯然將創建一個堆棧幀。 那么例子2:
<some code>
{
int a;
<some more code>
}
<yet more code>
我假設會有a
堆棧框架來反映 .
示例 3:
for (i=0; i<10; i++)
{
<single statement of code>
}
是否為i
的范圍創建了堆棧幀?
示例 4:
並且使用以下代碼是否更有效:
for (i=0; i<10; i++)
<single statement of code>
一般來說,我的問題是編譯器是否總是在使用花括號時創建一個堆棧框架,或者它是否使用智能並且只在需要時創建它們?
[如果我對堆棧框架的了解似乎有點簡單,我將回到 30 年前的學位,為此道歉]
當我寫這個時:
int x = 4;
int y = 3;
Console.WriteLine(x + y);
Console.WriteLine(x);
或這個:
int x = 4;
{
int y = 3;
Console.WriteLine(x + y);
}
Console.WriteLine(x);
我仍然在 IL 中得到這個:
.maxstack 2
.locals init (
[0] int32 x,
[1] int32 y
)
沒有額外的堆棧幀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.