http://blogs.msdn.com/ericgu/archive/2004/01/29/64717.aspxで、C# は構造体を形式パラメーターとして持つメソッドをインライン化しないことを学びます。これは、再帰などのスタックへの潜在的な依存によるものですか? もしそうなら、このように構造体パラメータを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;
}
}
2 行目に "m1" が出力され、インライン化されなかったことを示します。リリース ビルドをビルドし、Ctrl-F5 で実行しました (デバッガーをアタッチしないため)。何か案は?