在http://blogs.msdn.com/ericgu/archive/2004/01/29/64717.aspx中,我们了解到 C# 不会将结构作为形式参数的内联方法。这是由于对堆栈的潜在依赖,例如递归吗?如果是这样,我可以通过将 struct 参数转换为 ref 参数来受益吗?
public int Sum(int i)
{
return array1[i] + array2[i];
}
变成:
public int Sum(ref int i)
{
return array1[i] + array2[i];
}
编辑:我去尝试测试,但我无法在线获得任何东西。这是我尝试过的:
class Program
{
private static string result;
static void Main(string[] args)
{
Console.WriteLine(MethodBase.GetCurrentMethod().Name);
Console.WriteLine();
m1();
Console.WriteLine(result);
}
private static void m1()
{
result = MethodBase.GetCurrentMethod().Name;
}
}
它打印“m1”作为第二行,这表明它没有被内联。我构建了一个发布版本并使用 Ctrl-F5 运行它(不附加调试器)。有任何想法吗?