私はそれを完全に割り当てなしにするという使命を持ってライブラリを書き直しています。目標は、アプリの起動フェーズが完了した後、コレクションを0にすることです。
以前は、次のような呼び出しがたくさんありました。
Int32 foo = Int32.Parse(ASCIIEncoding.ASCII.GetString(bytes, start, length));
これは文字列を割り当てることだと思います。同じことを自動的に行うC#ライブラリ関数が見つかりませんでした。BitConverterクラスを見ましたが、それはInt32がそれを表す実際のバイトでエンコードされている場合のみのようです。ここに、Int32を表すASCII文字を表すバイトの配列があります。
これが私がしたことです
public static Int32 AsciiBytesToInt32(byte[] bytes, int start, int length)
{
Int32 Temp = 0;
Int32 Result = 0;
Int32 j = 1;
for (int i = start + length - 1; i >= start; i--)
{
Temp = ((Int32)bytes[i]) - 48;
if (Temp < 0 || Temp > 9)
{
throw new Exception("Bytes In AsciiBytesToInt32 Are Not An Int32");
}
Result += Temp * j;
j *= 10;
}
return Result;
}
より最適な方法でこれをすでに実行しているC#ライブラリ関数を知っている人はいますか?または、上記の実行を高速化するための改善(おそらく、1日の間に何百万回も呼び出されるでしょう)。ありがとう!