C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: List<T>はなぜClonableではないのでしょうか


(過去ログ 25 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■11755 / inTopicNo.1)  List<T>はなぜClonableではないのでしょうか
  
□投稿者/ white_nuts (1回)-(2007/12/21(Fri) 00:44:23)

分類:[C#] 

はじめまして。

System.Collections.ArrayListはICloneableを実装しているのに、System.Collections.Generic.List<T> は、なぜICloneableを実装していないのでしょうか。

使用言語はC#2.0です。

引用返信 編集キー/
■11756 / inTopicNo.2)  Re[1]: List<T>はなぜClonableではないのでしょうか
□投稿者/ 中博俊 (1226回)-(2007/12/21(Fri) 00:48:19)
中博俊 さんの Web サイト
なんで?別に必要ないと思うけど
というかICloneableはほぼ死んでると思うんですが・・・
引用返信 編集キー/
■11759 / inTopicNo.3)  Re[2]: List<T>はなぜClonableではないのでしょうか
□投稿者/ white_nuts (2回)-(2007/12/21(Fri) 01:57:02)
No11756 (中博俊 さん) に返信
> なんで?別に必要ないと思うけど
> というかICloneableはほぼ死んでると思うんですが・・・

ありがとうございます。ICloneableは使わないものなんですか。

では、下記のようなコードで正しいでしょうか?

class A{
List<string> list = new List<string>();

public List<string> GetCopy()
{
List<string> copy = new List<string>();
foreach (string s in list )
{
copy.Add(s);
}
return copy;
}
}
引用返信 編集キー/
■11763 / inTopicNo.4)  Re[3]: List<T>はなぜClonableではないのでしょうか
□投稿者/ 渋木宏明(ひどり) (606回)-(2007/12/21(Fri) 05:37:40)
渋木宏明(ひどり) さんの Web サイト
> では、下記のようなコードで正しいでしょうか?

「正しい」が時と場合によって異なるので、「IColnable は死んだ」なんてタイトルのブログエントリを Microsoft の CLR team の人が書いたりするわけです。

string はよく使われるクラスですが、実はかなり特殊なふるまいをするクラスなので、それで用が足りるなら「正しい」と言っていいでしょう。

ちなみに、等価な動作は

List<string> list = new List<string>();

List<string> copy = new List<string>(list);

でも得られるはずです。

引用返信 編集キー/
■11765 / inTopicNo.5)  Re[4]: List<T>はなぜClonableではないのでしょうか
□投稿者/ white_nuts (3回)-(2007/12/21(Fri) 09:32:14)
No11763 (渋木宏明(ひどり) さん) に返信
>>では、下記のようなコードで正しいでしょうか?
>
> 「正しい」が時と場合によって異なるので、「IColnable は死んだ」なんてタイトルのブログエントリを Microsoft の CLR team の人が書いたりするわけです。
>

読んでみたいです。よろしければ、その記事のURLを教えてください。


> string はよく使われるクラスですが、実はかなり特殊なふるまいをするクラスなので、それで用が足りるなら「正しい」と言っていいでしょう。

stringだと浅いコピーがないから、例としてはふさわしくなかった、ということでしょうか。


>
> ちなみに、等価な動作は
>
> List<string> list = new List<string>();
>
> List<string> copy = new List<string>(list);
>
> でも得られるはずです。
>

浅いコピーは

public List(IEnumerable<T> collection);

を使って行うということなんですね。

ありがとうございます。勉強になりました。
引用返信 編集キー/
■11766 / inTopicNo.6)  Re[5]: List<T>はなぜClonableではないのでしょうか
□投稿者/ 渋木宏明(ひどり) (607回)-(2007/12/21(Fri) 09:50:34)
渋木宏明(ひどり) さんの Web サイト
> 読んでみたいです。よろしければ、その記事のURLを教えてください。

http://blogs.msdn.com/brada/archive/2004/05/03/125427.aspx

> stringだと浅いコピーがないから、例としてはふさわしくなかった、ということでしょうか。

deep copy を考えなくてよいってのは、参照型としてはむしろ珍しいことだと思います>string

引用返信 編集キー/
■11768 / inTopicNo.7)  Re[6]: List<T>はなぜClonableではないのでしょうか
□投稿者/ white_nuts (4回)-(2007/12/21(Fri) 10:07:47)
No11766 (渋木宏明(ひどり) さん) に返信
>>読んでみたいです。よろしければ、その記事のURLを教えてください。
>
> http://blogs.msdn.com/brada/archive/2004/05/03/125427.aspx

ありがとうございました。ObsoletedってことでList<T>はICloneableを実装していないわけですね。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -