要素を動的に作成したくない場合は、起動時にMotionVectorインスタンスの(大きな)バッファを作成し、必要に応じてそれらを再利用することを検討してください。それからあなたは、それらをダイナミックに作成/破壊するというペナルティを受けることはありません。
もちろん、「フリー」インスタンスを取得して取得するには、そのために構造体にブール値を使用するか、またはインターフェイスを使用する必要があります。
のアプリの初期化中motionvectorsを作成します:
MotionVectors motionVectors;
は、動きベクトルクラスにブール値を追加します。
public class MotionVector
{
bool InUse { get; set; }
public MotionVector()
{
InUse = false;
}
}
は、新しいクラスを定義しますが、例えばでしこれを行うには
モーションベクター:
class MotionVectors
{
MotionVector _instances[100];
public void Free(MotionVector vector)
{
var index = 'search vector in _instances'
_instances[index].Inuse = false;
}
public MotionVector GetNewInstance()
{
var index = 'first free vector in _instances'
_instances[index].Inuse = true;
return _instances[index];
}
}
http://stackoverflow.com/questions/3942721/c-structs-versus-classes –
実績の問題はありますか? http://blogs.msdn.com/b/ericlippert/archive/2009/04/27/the-stack-is-an-implementation-detail.aspx – ken2k
http://stackoverflow.com/a/1114152/55209を参照してください。 - 優れた説明 –