shallow copy? deep copy?

同じクラスのインスタンスがたくさん入った配列が欲しかった。でも同じインスタンスへの参照が詰まっているのではだめ。全部違うもの。内容は同じなのがいい。

という処理がいくつか必要になって、ループでまわすのが嫌だったから API を調べてみた。ちなみに言語は C# .NET

そうしたら ArrayList.Repeat(object, int) が見つかった。 static なメソッドで、同じインスタンスを繰り返してくれるらしい。

でも使用前には一抹の不安が残った。どこにも shallow copy なのか deep copy なのか書いていない。このメソッドだけじゃなくて API ドキュメント全体にいえること。

怖いながらも使ってみた。とおりゃんせ。

見事に失敗。実装は shallow copy だった。

shallow か deep かはけっこう気になるから書いて欲しかったな。残念。