構造体とクラス

たとえばC#

List<Enemy> enemies = new List<Enemy>();
....
foreach(Enemy enemy in enemies)
{
    enemy.Update();
}

とかってやるじゃないですか。 C#では構造体は値型、クラスは参照型なんだが、 foreach でリスト enemies から取り出してくる enemy はだから当然クラスの場合は参照であり、 構造体の場合は値である。 値はコピーに過ぎないから、enemy.Update() とかってやっても無意味なんだわ。 なんか知ってるようで知らなかった。はまって思い知ったというか。

しかし、参照型とか値型とか、自分でもよくわかってないことを学生に教えるのはどうなのか。

いや、やはり、参照型のクラスとか値型の構造体とかいう仕様のC#もどうなのかと思う。 こんな言語はC#くらいなのだから。