私はC#コードで宣言する必要がある長いバイト配列を持っています。私はこのような何か:長い定数バイト配列の宣言
public static class Definitions
{
public const byte[] gLongByteArray = new byte[] {
1, 2, 3,
//and so on
};
}
をしかし、私はconstの配列のみをヌルで初期化することができるというエラーが発生します。
私はstatic
にconst
を変更する場合、それはコンパイルが、私は持っている問題はこれです - 私はpublic static byte[] gLongByteArray
としてそれを宣言するとき、それは私のアプリをロードするたびに初期化されることはありません、右?その場合、gLongByteArray
変数は、メモリにロードされるコンパイル済みのexe/dllファイルで定義されている配列を指しています。理由は私はこの配列がかなり長いので、私は私のプログラムは、アプリケーションが起動するたびに、それを読み込んでCPUサイクルを無駄にしたくない、または悪い、このクラスは参照されている...
このような場合でもパフォーマンスの影響は最小限に抑えられます。より大きな問題は、 'byte []'が定数であるための非常に良い候補ではないということです。変わらないものには定数を使用することをお勧めしますが、将来の実装ではバイトシーケンス(特に長いバイトシーケンス)がうまく変更される可能性があります。 'const'を使用すると、コンパイラは定数へのすべての参照を 'ベークイン'します。これは、定数値がコード全体で_duplicated_であることを意味します。後で定数を変更すると、新しい定数に対してコンパイルされたモジュールだけが新しい値を持ちます。 –
他の人が言っているように、推測に基づいてパフォーマンスの決定を下さないでください。事実に基づいてそれらを作る。現実的なサイズの配列を作成し、起動時のパフォーマンスを測定します。その後、効果があるかどうかがわかります。定数で初期化された大きなバイト配列は、合理的に効率的に処理されます。 –
@EricLippert:デバッガについて聞いたことはありませんか? – ahmd0