1.C#、VB.NET-6.型string型はプリミティブ型に分類されますが、参照型です。値型と勘違いされますが誰がなんと言おうと参照型です。何も考えず以下のようなコードを書くとどうでしょう。結果としては値型のような挙動になります。"Piyo"Console.WriteLine(str1)Console.WriteLine(str2)参照型ならstr2はnewしていないので、変更を加えると同じ参照先を保持しているstr1にも影響が出て、どちらも「Piyo」になる・・・はずですが、結果は以下になります。HogePiyostring型はよく使う型の一つですが、例の通り値型のような動きをするので勘違いしやすいです。Hogeをfor文などで何度も+=(&=)演算子で追加するようなプログラムを考えます。以下のようなイメージを持っていませんか。実際は以下のようなイメージです。string型は参照型ではありますが、少し特殊でnewをしなくても変更が加わった瞬間に勝手にnewする型なのです。変更がかかる度に内部的に別のインスタンスを作成して新しい箱に値を保持してしまいます。str1;」という書き方をしても、str2とstr1は値型と同じような「全く別物」として扱われます。ここで問題になるのが、長文を+=(&=)演算子で追加するような場合です。これは非常にコストがかかりますので、本来はSringBuilderを利用しなければなりませんが、果たしてどれくらい違うのでしょうか。速度を測る方法もありますが、今回はメモリ使用量を見てみましょう。以下のテストコードを自分で実行してみて下さい。Javascriptからクリップボードを設定はてなブログをはじめよう!sasaki816さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。