よく分からん用語解説

分からん用語をここに書いておいたら、誰かが調べて答えを書いてくれるかもね!
ルールとして「C#言語仕様に関連するキーワードを盛り込むこと」とします。そうしないと用語解説になんねーし。

名前空間って何よ?

クラス群を格納するための番地みたいなものです。これを利用するメリットとしては、以下のようなものがあります。
  • クラス同士の名前の競合を防げる。
もし同じ名前のクラス「class Tanaka」が2つあった場合、単純にクラス名でアクセスしようとしても、どちらの田中さんかわかりません。
こういう場合、「namespace 1choume」「namespace 2choume」などの名前空間で区切ってやると、1丁目の田中さんと2丁目の田中さんで区別が可能になります。

実際のコードでは例えば描画のクラスを「class Draw」と名づけたとして、別の場所で同じ名前のクラスが作られていないとは限りません。
Drawなんてありきたりだから悪いんだ!ということで「class CharactorDraw」などと付けるのもアリです。
ですが、こうすると場所によって描画クラスの名前を書くときに「ここは敵の描画だからEnemyDrawかな?」とか変な頭を使わなければなりません。これはめんどくさいですよね。
簡単で同じような名前にできるならば、そうした方が良いに決まってます。

  • 同じ名前空間内のクラスでも別ファイルに切り分けることができる。
namespaceは何もひとくくりで書く必要はありません。いろんな場所に同じ名前空間を定義することができます。
2つのファイルを同じ名前空間にくるんでしまえば、Cのように他方のヘッダをIncludeする必要はありません。ヘッダ地獄から開放されることになります。

インスタンスってなんだ?何故newしなきゃ駄目なの?

インスタンスを日本語で訳すと、「実体」です。つまりクラスというものはインスタンス化(実体化)させないと使えない幻のようなものなのです。(static(静的)な変数やメソッドはその限りではありませんが、あれは例外です。)
ここら辺はC++とは違います。C++ではクラスのポインタに対してnewをすることで領域を任意のタイミングで確保できる、といったものでした。
加えてC++では「Person taro」のようにクラス変数を単純に宣言するだけでも利用可能でした。これがC#ではご法度になっています。

では何のためにそのようになっているか、

継承ってなんのための機能なの?
抽象クラスとかややこしそうで嫌い
インターフェース?なんかカッコよさそう・・・
インデクサ


タグ:

+ タグ編集
  • タグ:
最終更新:2009年10月29日 16:55
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。