安全でないコンテキストで、次のようなコードがあります。
ValidatePartialOperation(array, startingOffset, runLength);
fixed (double* _op = array)
{
double* op = _op + startingOffset;
callSomething(op, runLength);
}
そして、そのコピーをいくつかの異なる場所に貼り付けました。しかし、私はそのような検証とポインター演算を複数の場所に置くのは嫌いなので、ロジックを次のような 1 行にまとめたいと思います。
double* op = preCall(array, startingOffset, runLength);
callSomething(op, runLength);
postCall(array);
またはさらに良い:
using (double* op = preCall(array, startingOffset, runLength))
{
callSomething(op, runLength);
}
しかし、何が起こっても、「修正済み」バージョンからパフォーマンスを失うわけにはいきません。
私の今の計画は、fixed ステートメントが行っていることを模倣することですが、実際にはそれが何であるかはわかりません。おそらく、固定操作を伴ういくつかの try-catch ブロックですか?