- PR -

配列高速コピー

1
投稿者投稿内容
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2003-09-21 23:30
みなさん、いつもお世話になっております。

C#でArrayList型の変数の内容を配列にコピーしたいですが
ポインタかなんかを使って高速にできませんでしょうか?
方法は何でもいいですが速くできる方法が知りたいです。

お世話になりっぱなしで申し訳ありません、何しろ私は知識がありませんので
質問をする側にしか立てません。よろしくお願いします。
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-09-22 00:24
引用:
C#でArrayList型の変数の内容を配列にコピーしたいですが
ポインタかなんかを使って高速にできませんでしょうか?
方法は何でもいいですが速くできる方法が知りたいです。

どんなコードを書いていて遅いと言っているのでしょうか?
ループで回したりしてませんか?
私はCopyToメソッドを使ってますが遅いと感じたことはありません。

引用:
お世話になりっぱなしで申し訳ありません、何しろ私は知識がありませんので
質問をする側にしか立てません。よろしくお願いします。

まずは実行している内容、問題点、条件等を具体的に書いてみてください。
たけちゃん
会議室デビュー日: 2003/04/10
投稿数: 6
お住まい・勤務地: 埼玉在住 勤務地東京
投稿日時: 2003-09-22 00:41
ArrayListの中の、参照をコピーしたいのか、
参照先の値をコピーしたいのかわからないのでなんともいえないですね。

参照をコピーしたいのなら、ArrayList#CopyToでいいと思いますけど、
参照先の値をコピーしたいなら(クローンっていうんだっけ)、
以下のようにシリアライズを使うと便利です。


Public Function DeepCopy(ByVal obj As Object) As Object
Dim bf As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
Dim ms As New System.IO.MemoryStream()
bf.Serialize(ms obj)
ms.Seek(0 System.IO.SeekOrigin.Begin)

Dim result As Object = bf.Deserialize(ms)
ms.Close()
Return result
End Function

ソースはVB.NETですけど、簡単に変換できますよね…
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2003-09-22 01:13
お返事ありがとうございます。

今やっていることを簡単に説明させて頂きます。
テキストエディタコントロールを作成しています。
ファイルの内容を保持するバッファとしてArrayListを
使っていますが、Linesというプロパティをサポートした方が
自然です(リッチエディットの拡張ではないですが)が
それがstring[]型です。エディタ内部でstring[]型の
変数は単なるダミーです。要求が来たときファイルの内容(ArrayList)を
string[]として返すだけのために存在します。ファイル内容が大きいとき
この処理が時間かかりそうなのでなんか方法ないかなと質問させて頂きました。

CopyToでいけそうな感じですね。知ってはいましたが詳しく調べてませんでした。
すいません。助かりました。

1

スキルアップ/キャリアアップ(JOB@IT)