回答編集履歴
1
追記
test
CHANGED
@@ -79,3 +79,39 @@
|
|
79
79
|
|
80
80
|
|
81
81
|
の答えにはなると思うのですがいかがでしょうか?
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
**【追記】**
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
ついでに string 型の不変性の話を書いておきます。下のコードを見てください。
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
```
|
96
|
+
|
97
|
+
string s1 = "hoge1";
|
98
|
+
|
99
|
+
string t1 = s1;
|
100
|
+
|
101
|
+
s1 += "0";
|
102
|
+
|
103
|
+
Console.WriteLine(t1); // 結果は "hoge1"
|
104
|
+
|
105
|
+
```
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
string は参照型なので、上記の ```s1 += "0";``` で、変数 s1 が指すオブジェクトを "hoge1" ⇒ "hoge10" を変更する、即ちオブジェクトのアドレスは変わらないと思うかも知れませんね。
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
でも、不変性があるのでオブジェクトは変更できません。どうしているかと言うと、"hoge10" というオブジェクトを新たに作って(当然 "hoge1" とはアドレスが違う)それへの参照を s1 に代入します。
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
一方、t1 は "hoge1" を指したままのので ```Console.WriteLine(t1);``` の結果は "hoge1" になります。
|