C# で DirectX 3D エンジン用の数学ライブラリに取り組んでいます。私は、素晴らしくまとめられた強力なライブラリであるSlimDXを使用しています。SlimDX はかなりの数の数学クラスを提供しますが、それらは実際にはネイティブ D3DX オブジェクトのラッパーであるため、オブジェクト自体は非常に高速ですが、相互運用性はないと思います。なぜなら、私のマネージ C# コードがそれらより優れているからです。
私の特定の質問は、浮動小数点の比較に関係しています。一種の標準的な方法は、イプシロン値を定義し、その値を浮動小数点値の差と比較して、次のように近さを判断することです。
float Epsilon = 1.0e-6f;
bool FloatEq(float a, float b)
{
return Math.Abs(a - b) < Epsilon
}
関数呼び出しのオーバーヘッドが実際の比較を圧倒するため、この単純な関数は C++ でインライン化されます。C# コンパイラはこれを行いますか? メソッドをインライン化する必要があることを C# コンパイラに伝える方法はありますか?