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

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

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

Re[4]: 多重リストのコピーの仕方


(過去ログ 132 を表示中)

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

■77814 / inTopicNo.1)  多重リストのコピーの仕方
  
□投稿者/ KH (12回)-(2015/11/24(Tue) 11:25:25)

分類:[C#] 

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

liststring.Add("5"); liststring.Add("4"); liststring.Add("3"); liststring.Add("2"); liststring.Add("1");
list.Add(liststring);
liststring.Clear();
//この時点でlistの中は空になってしまいます。おそらくアドレスがコピーされていて、値がコピーされていない。

liststring.Add("3"); liststring.Add("2"); liststring.Add("1");
list.Add(liststring);
/*この時点でlistの内容が
3,2,1
3,2,1
となってしまいます。*/

値をコピーするにはどうしたらよいのでしょうか?
よろしくお願い申し上げます。

引用返信 編集キー/
■77815 / inTopicNo.2)  Re[1]: 多重リストのコピーの仕方
□投稿者/ 774RR (338回)-(2015/11/24(Tue) 11:48:16)
まずは「値型」と「参照型」について理解したほうが良い、と思う。
そうすると new List<string>() を必要な回数(複数回)しないといけないってことが理解できると思う。

System.String (string) も参照型なので「同じ内容の文字列」が出てくるときは要注意。

引用返信 編集キー/
■77817 / inTopicNo.3)  Re[2]: 多重リストのコピーの仕方
□投稿者/ KH (13回)-(2015/11/24(Tue) 12:10:27)
liststring.Clear();
ではなく
liststring = new List<string>();
としたらうまくいきました。
ありがとうございます。
引用返信 編集キー/
■77818 / inTopicNo.4)  Re[3]: 多重リストのコピーの仕方
□投稿者/ KH (14回)-(2015/11/24(Tue) 12:11:04)
解決済みし忘れました。すいません。
解決済み
引用返信 編集キー/
■77819 / inTopicNo.5)  Re[2]: 多重リストのコピーの仕方
□投稿者/ yukihiro (5回)-(2015/11/24(Tue) 13:14:48)
No77815 (774RR さん) に返信
> System.String (string) も参照型なので「同じ内容の文字列」が出てくるときは要注意。

stringはimmutableなので何も注意することはないと認識してますが、
具体的にどういった場面で注意すべきでしょうか。

解決済み
引用返信 編集キー/
■77825 / inTopicNo.6)  Re[3]: 多重リストのコピーの仕方
□投稿者/ 774RR (339回)-(2015/11/24(Tue) 14:06:25)
確かに String は immutable なので通常の用途では注意するところは何一つ無いっす。

String としての同一性でなくて Object としての同一性を比較したりすると、
String は値型でなくて参照型である、ということがわかってないとハマルことが・・・
http://bbs.wankuma.com/index.cgi?mode=al2&namber=77483

解決済み
引用返信 編集キー/
■77830 / inTopicNo.7)  Re[4]: 多重リストのコピーの仕方
□投稿者/ yukihiro (6回)-(2015/11/24(Tue) 15:54:31)
No77825 (774RR さん) に返信
> String としての同一性でなくて Object としての同一性を比較したりすると、
> String は値型でなくて参照型である、ということがわかってないとハマルことが・・・
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=77483

なるほど。
了解です。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -