C#のusing

XNAの授業が始まったのでいろいろ授業準備。 ついでにあまり授業とは直接関係ないが気になったことなど調べる。 C#に出てくるusingはいろんな使い方がある。

一つはGame1.csの冒頭に

using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

などと出てくるやつだけど、これはJavaだとimportと書くところだが、 C#ではデフォルトのnamespaceを指定しているという意味らしい。 MicrosoftXna、Frameworkなどがそれぞれnamespaceに相当し、ネストしているということだろう。 つまり

namespace Microsoft {
  namespace Xna {
    namespace Framework {
    }
  }
}

てな感じで。

それから、 Program.csなどで

 using (Game1 game = new Game1())
  {
      game.Run();
  }

などと書かれているもの、これは例外が発生したとき自動的にDispose()してくれるものらしい。 Rubyでファイルを自動的に閉じるときにイテレータを使うのに似ている。

また、XNAでしばしば見かけるわけではないが、

  using ThisClass = somenamespace.OtherClass;

のように、よそのnamespace (あるいはクラス)の別名を定義するときに使うこともできるらしい。 ふーん。 ていうか、それぞれまったく違う状況で使われているので紛れることはないが、 別々のことが同じusingというもので表されているので混乱する。