• ベストアンサー

C++の const int* dataを置き換える C#

C#2005で、C++の const int* dataを置き換えるにはどうしたらよいでしょうか? メソッドの引数でdataを渡しているのですが、dataは intの配列です。 メソッド内では書きかえられたくないのでC++の時にconstを付けました。 C#ではどのように記述するのが正しいでしょうか? C++からC#に置き換えていますが、参考になるサイトがありましたら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

 こんにちは。  配列をメソッドの引数に渡したいのでしょうか。  以下の通り  http://msdn.microsoft.com/ja-jp/library/hyfeyz71(VS.80).aspx private void test() { int[] data = { 0, 1, 2 }; this.Method(data); } private void Method(int[] data) { //dataを見る }  で出来るのではないでしょうか。  其の他参考になりそうなサイト  http://ufcpp.net/study/csharp/sp_ref.html  constキーワードに関しては諦めるしかないと思います。  例えばC#でwin32APIを呼び出す場合でも、const ???* のパラメータをSystem.IntPtr等として指定します(constである事を意識していない)。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

>大きい配列ですが、インデクサでは処理効率は落ちませんか? そもそもC#の配列は全てSystem.Arrayクラスのオブジェクトのはずなので、ネイティブなC++と比べる意味は無いかと。 一度試して速度を検討してみてはどうでしょうか?としか言えません。

すると、全ての回答が全文表示されます。
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

C#は配列をconstに出来ないので、クラスでインデクサを使って配列に見せかけた上でインデクサの機能で書き換えを阻止するしか無いんじゃないでしょうか。 っても私もC#を始めて1週間ぐらいなんですけどね。違っていたら申し訳ないです。

miebin
質問者

補足

大きい配列ですが、インデクサでは処理効率は落ちませんか?

すると、全ての回答が全文表示されます。

関連するQ&A