- PR -

C# ArrayList のコピーについて

投稿者投稿内容
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-09-08 20:46
引用:

駄目な理由って何かあるんでしょうか。



やりようの無い時があるからかと。
例えば、接続中の Socket のインスタンスのコピーなんかどうします?

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-09-09 08:48
朝、電車の中で考えてて、そういえばシングルトンの時とか困るなぁ、と。

引用:

やりようの無い時があるからかと。
例えば、接続中の Socket のインスタンスのコピーなんかどうします?


ですね。

コピーの振る舞いはクラス自身がどうするか決める、ということですね。

かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2005-09-09 12:43

引用:

Jittaさん
> clsDataクラスにclsData自身が引数のコンストラクタを作る方法です
 あ〜!!なんか、「コピーコンストラクタは作れない」と思いこんでいた。。。
何でだったんだろう??



メンバ変数が循環参照していて、無限ループに陥ったとか?

[ メッセージ編集済み 編集者: かずくん 編集日時 2005-09-09 12:44 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-09-10 00:24
> メンバ変数が循環参照していて、無限ループに陥ったとか?
 Managed C++ の話を、コモンランゲージ全体にまで拡大解釈していたようです。

MSDN のアドレスに、"2005JUL"の部分を適宜修正して、放り込んでください。
ms-help://MS.MSDNQTR.2005JUL.1041/vcmex/html/vclrfRestrictionsOfManagedTypes.htm
引用:

GC 型と値型では、次のことができません。

※カスタム コピー コンストラクタの定義。



_________________
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2005-09-10 02:17
南部です。

シリアル化可能にできるのであれば。

コード:
[Serializable]
public class clsData
{
  //略
}

public static ArrayList CopyArrayListDeep(ArrayList src)
{
  ArrayList copy = null;
  BinaryFormatter f = new BinaryFormatter();
  try 
  {
    using(MemoryStream ms = new MemoryStream()) 
    {
      f.Serialize(ms, src);
      ms.Position = 0;
      copy = (ArrayList)f.Deserialize(ms);
    }
  } 
  catch (SerializationException) {}

  return copy;
}

囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-09-10 02:22
引用:

シリアル化可能にできるのであれば。



ガーン!目から鱗…。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2005-09-10 02:26
引用:

シリアル化可能にできるのであれば。



ガーン!コロンブスの卵…。

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