C#のstructの配列要素を別名でアクセスしたい。
- 題名: C#のstructの配列要素を別名でアクセスしたい。
- 著者: mame
- 日時: 2012/06/20 15:15:25
- ID: 30608
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: C#のstructの配列要素を別名でアクセスしたい。
- 著者: Hongliang
- 日時: 2012/06/20 15:55:39
- ID: 30611
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: C#のstructの配列要素を別名でアクセスしたい。
- 著者: mame
- 日時: 2012/06/21 13:24:06
- ID: 30619
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[その他]
【解決したい問題】
C#のstructの配列のある要素を参照したい場合に、
コピーではなくポインタ的に別名でアクセスすることは出来るでしょうか?
条件として、
・structをclassに変更することは出来ない。
・unsafeは使えない。
・別名経由で、読み込み、書き込み両方を行いたい。
・C#2.0まで。
コード例
----
struct Rect
{
public int x;
public int y;
public int w;
public int h;
}
--
void Func()
{
Rect[] rects = hoge.getRects(); // どこかから取得した、と仮定。
// 必要に応じて配列コピー。今回は省略。
int count = points.Length;
for ( int i = 0; i < count; ++i )
{
Rect r = rects[ i ]; // これだと、ただのコピーになる。
// ここを参照で処理したい。
// 以下の2行が同じ挙動になるようにしたい。
// r.x = r.x * 2;
// rects[ i ].x = rects[ i ].x * 2;
}
}
----
C++であれば、
Rect& r = rects[ i ];
と書く所なのですが…
【解決するために何をしたか】
色々キーワードを変えて検索してみましたが、
DLLとの通信関連ばかり引っ掛かってしまい
見つけることが出来ませんでした。
【追加事項】
単純な言語仕様の見落としかもしれませんが、
ご存知の方がいらっしゃいましたらご教授頂けると助かります。