C#の2次元配列(非ぎざぎざ)を1dに平坦化して戻す効率的な方法を知っている人はいませんか?私はバックエンドでC#が1d配列として保持しなければならないことを知っています。可能であれば、バックエンド1d配列のハンドルを取得したいと思います。byte [、]をbyte []に変換する
私がこれをやりたいのは、管理されたコードで2dを持つことができたいと思っているからです。時には、管理されていないdllのインポートされたコード(最適化されています)デジタル画像処理における組み立ては良い例です)。そして、最も簡単なだけの値を一つずつコピーし、あなたのアレイを反復することである
int x = i % width;
int y = i/width;
:
int i = y * width + x;
バック:1Dインデックスに2Dインデックスから行くために
なぜこれを行う必要がありますか? – Oded
"私はバックエンドでC#が1d配列としてそれを保持しなければならないことを知っています"あなたはそれをどう思いますか?それはまったく当てはまる必要はありません。 – jason
@ Jason:実際には、仕様の次の行は、基礎となる表現が線形配列であると仮定できると示唆しているようです。 §18.6より:「配列が格納される方法を考えると、任意の次元の配列を線形であるかのように扱うことができます。しかし、これは事実である必要はありませんが、それが本当であることは非常に良いことに注意してください。 – jason