タイトル : クラスの場合は・・ 投稿日 : 2007/09/11(Tue) 10:53 投稿者 : 灘
String型は不変で新たにインスタンスが生成されるということはわかりました! それは「クラス内部のString型メンバ変数」でも「構造体内部のString型メンバ変数」でもおなじように新たな文字が代入されれば「新たなインスタンス」が生成されるということではないのでしょうか。 とすればクラス、構造体のどちらのString型変数FirstNameも新たに生成されるインスタンスを指し示すわけではないのですか・・・ > aPersonStruct2.FirstName ="Ann"とすると > FirstNameの参照先は互いに”Ann"になるのではないのでしょうか・・? なりません。先に書いたように、String 型は変更できないという点に注意してください。 そもそもFirstNameには「住所」みたいなものが格納されているとおもっているのですが・・ それは間違いなのでしょうか。 FirstName=「ヒープ上にある「値」がある住所」 構造体型変数@.FirstName=構造体型変数A.FirstName としても クラス型変数@.FirstName=クラス型変数A.FirstName としても「同じ住所が格納される」ことになるので、 新たに 構造体変数@.FirstName="新文字" や クラス型変数@.FirstName="新文字" と「文字列」が代入されたとして、新たな文字列インスタンスが生まれたとしてもその新たな文字列の住所(アドレス)が代入される」わけではないのですか・・ もしかすると > aPersonStruct2=aPersonStruct という構造体型の代入と aPersonStruct2.FirstName=aPersonStruct.FirstName という構造体型のメンバ変数の代入 の後に aPersonStruct2.FirstName="新文字" とすることには多少の違いがあるのでしょうか? |