最近の仕事と言えばC#を扱っているんですがね?
アセンブラからプログラムを使い始めたあたしとしては、いろいろと戸惑うことがあるのです。
A=B
と書いたときプログラム的には
Bの内容をAに代入することを意味します。
Bが3だった場合
それまでのAが何であろうとも
A=Bを実行した段階で
Aも3になります。
しかし、ここには重要な問題があります。
AとBは同一か否か
Aが3でBが3なら 同一でしょ?とか思うかもしれませんが
それぞれの値の意味は同じだけど
AはAで有ってBではない
Aの中身とBの中身は意味(数値)は一緒だけどAとBは別の入れ物であると言うことです。
これは、プログラムがパソコンのメモリ上に存在することを考えるとよく分かります。
たとえばAやBを家と考えます。
AとBが全く同じ形状をした家で、A宅とB宅に全く同じ家具を設置した場合、中に入ってしまうとAの家かBの家か分からなくなります。
でも、窓から外を見れば、風景は違いますから、どっちだか分かるでしょう
なのでアセンブラやC++には家を住所的に扱う方法、家の中身を扱う方法、家の中身を移動する方法、家の中身を複製する方法、全部が違う方法で表現します。
しかしC#は困ったことにこれが全部同じなのです。
A=B
の後に
A=4
を行うと
Bの中も4になることがあります。
この場合AとBは全く同じ物です。
AはBの別表現
●●番地▲号
と表記するか
●●−▲
と書くか、そんな感じです。
しかし、
A=B
の後に
A=4
を実行するとBは3のままの場合もあります。
この場合AはAで存在し、Bの複製をAに入れたことになります。
C#になれてくると、この違いが分かるようになるのかもしれませんが、
今のところは分かりません。
どうしたらいいのかさっぱりです。
とりあえず、愚痴です(笑 |