【发布时间】:2011-03-27 22:20:24
【问题描述】:
我正在阅读Effective C# (Second Edition),它谈到了方法内联。
我了解原理,但根据书中的 2 个示例,我看不出它是如何工作的。书上说:
内联意味着用函数体代替函数调用。
很公平,所以如果我有一个方法及其调用:
public string SayHiTo(string name)
{
return "Hi " + name;
}
public void Welcome()
{
var msg = SayHiTo("Sergi");
}
JIT 编译器可能(将?)将其内联到:
public void Welcome()
{
var msg = "Hi " + "Sergi";
}
现在,用这两个例子(书中逐字记录):
示例 1
// readonly name property
public string Name { get; private set; }
// access:
string val = Obj.Name;
示例 2
string val = "Default Name";
if(Obj != null)
val = Obj.Name;
这本书提到了代码,但没有进一步讨论如何内联它们。 JIT 编译器如何内联这两个示例?
【问题讨论】:
-
这个问题目前非常广泛,回答以下问题会有所帮助:说明结果内联的书是什么?为什么你认为它不起作用?
-
编译器是指JITer编译器?
-
@earlNameless, @lukas - 这本书提到了这两个例子,并没有进一步说明 如何 它将被内联,因此我的问题。是的,我的意思是 JIT 编译器。我已经更新了我的问题以明确这些要点,谢谢。
标签: c# .net compiler-construction jit