- - PR -
配列高速コピー
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-09-21 23:30
みなさん、いつもお世話になっております。
C#でArrayList型の変数の内容を配列にコピーしたいですが ポインタかなんかを使って高速にできませんでしょうか? 方法は何でもいいですが速くできる方法が知りたいです。 お世話になりっぱなしで申し訳ありません、何しろ私は知識がありませんので 質問をする側にしか立てません。よろしくお願いします。 | ||||||||
|
投稿日時: 2003-09-22 00:24
ループで回したりしてませんか? 私はCopyToメソッドを使ってますが遅いと感じたことはありません。
| ||||||||
|
投稿日時: 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ですけど、簡単に変換できますよね… | ||||||||
|
投稿日時: 2003-09-22 01:13
お返事ありがとうございます。
今やっていることを簡単に説明させて頂きます。 テキストエディタコントロールを作成しています。 ファイルの内容を保持するバッファとしてArrayListを 使っていますが、Linesというプロパティをサポートした方が 自然です(リッチエディットの拡張ではないですが)が それがstring[]型です。エディタ内部でstring[]型の 変数は単なるダミーです。要求が来たときファイルの内容(ArrayList)を string[]として返すだけのために存在します。ファイル内容が大きいとき この処理が時間かかりそうなのでなんか方法ないかなと質問させて頂きました。 CopyToでいけそうな感じですね。知ってはいましたが詳しく調べてませんでした。 すいません。助かりました。 |
1