2011-08-16 8 views
3

可能な二重に参照型であっても値型として振る舞う:文字列が非常に大きくなる可能性があるため
In C#, why is String a reference type that behaves like a value type?はなぜ文字列が、それはC#の

私は、文字列が参照型である知っているとスタックは1 MBです。しかし、プログラム的にコーディングしながら、私はそれが

string func_name(string streg) 

{  
streg="hello"; 

return streg; 

} 

------------- 

string str="hi"; 

str= func_name(str); 

今strはハロー値を取得例えば

の値タイプ ように振る舞う参照してください?

なぜですか?ここでは値の型とまったく同じです。

+0

これは値型のように機能しますか?参照型は、このテストでは同じ動作をします。 – dlev

答えて

0

それはだ - あなたは、内容を変更することはできませんIE定義されたオブジェクトのジョンスキートは、文字列型文字列は二行目はそう本家

を例

string a ="Hello"; a=a+"World";

を考えてみましょう不変であるので、それがあるhere

0

との関係でこの概念のかなり良い説明を与えます

CLRは新しい文字列oを作成します値がHello worldのオブジェクトを削除し、この新しいオブジェクトの参照を変数aにコピーします。 型は不変ですが、変数はありません。文字列型の変数に新しい参照を割り当てることができます

関連する問題