ブルーノのC#プログラミング & unity勉強日記

プログラミング素人、ブルーノの自主勉強ノートです。他のプログラミングを勉強したい方の助けになれば幸いです。その他趣味の雑記もしていきたいです

名前空間について

f:id:covory10101101276:20180204225015j:plain

ワイトモ洞窟

 

みなさんこんにちは🌚

缶詰の美味しさにハマっているブルーノです。安いし保存がきくし身体に良いし最高の食べ物だと思うんですよね🤩

さて今回からは少しですが名前空間についてやっていきます。今までプログラムの冒頭に書いてきたアレです。

 

名前空間

今までの全てのプログラムの冒頭にはこの記述がしてありました。

using System;

 

ジェネリックを使う時などはここにさらに別の記述を足したりもしましたね。これは一体なんなんでしょうか。このSystemという部分は名前空間と呼ばれるもので、System名前空間は今まで使っていたクラスや構造体やインターフェイスや列挙体やデリゲートなどの機能が全て詰め込まれているデフォルトの名前空間になります。名前空間は自由に作成することができ、その中で定義されたクラスや構造体などの要素はその名前空間の有するものになります。つまり、名前空間を自分で定義しておくことで、他の人が作ったプログラムの中に自分のプログラムと同じ名前のものがあったとしても見る人もコンパイラも混乱せずに済むのです。

さて、名前空間を定義するにはnamespaceキーワードを使います。名前空間で定義できるのは ・クラス ・構造体 ・インターフェース ・列挙体 ・デリゲート ・別の名前空間 です。

f:id:covory10101101276:20180204232357p:plain

f:id:covory10101101276:20180204232402p:plain

Gorilla名前空間とMonkey名前空間で同じAnimalクラスを定義していますがエラーは発生しません。名前空間名.クラス インスタンス名 でインスタンス化することができます。

 

では次に、usingについて見ていきましょう。これはusing directiveというもので、ディレクティブは、コンパイラ名前空間についての指示を設定できるものです。今までの

using 名前空間;

の他にも

using エイリアス = 名前空間名;

という使い方もできます。さて、エイリアスというワードが出てきました。エイリアス(Alias)は「別名」という意味で、その名の通り、名前空間名をエイリアスの名前で代用することができます。ここで、さっきのプログラムをちょっと書き換えてみます。

f:id:covory10101101276:20180204234109p:plain

ゴリラをディレクティブで可視化し、Bruno126クラスの中ではそのままクラス名でアクセス指定しています。モンキー名前空間にもAnimalクラスはあるのにちゃんとゴリラにアクセスできていますね。一方モンキー名前空間はMで簡略化していますね。

 

さて、最初に名前空間が定義できるものの中に「別の名前空間」とあげましたが、これは名前空間がネストできることを表します。下のプログラムを見てください

f:id:covory10101101276:20180205000505p:plain

f:id:covory10101101276:20180205000510p:plain

Donky名前空間でさっきの名前空間がネストされていますね。アクセスするときは頭からピリオドで辿ってDonkey.Gorilla.Animalのようにアクセスします。実はMonkey名前空間も同じDonkey名前空間でネストされているのもミソで、クラスの時はpartialキーワードを使わなければいけませんでしたが、名前空間の場合はそのまま使うことができます。今回はここまでにしておきます。

 

冬の空は星が一段と綺麗に見える気がします。あんな小さくてたくさん散らばっているのに一つ一つがこの星と同じものだと考えると、世界は見えるだけでも無限にあるんだなと思います。そうするとそのうちのたった一つのこの星の中ですら輝くことが難しく、自分という存在がいかにちっぽけかを考えてしまいますね。別にネガティブなわけではないですよ笑 むしろそう考えると、自分の悩みなんてそのさらに小さな心の中に引っかかっている程度のことなんだと思うし、と同時にいくらでもがむしゃらに頑張って精一杯輝いてやりたいと思えます。すいません。ネガティブではないですが、今はセンチメンタルです笑