共通クラス作成 <他の名前空間にあるクラスメソッドを参照したいなら、usingディレクティブを使う>
共通クラス作成にあたっての段取りを記入。
共通クラスは1つ1つのクラスの機能を一つにしたもの。
・どのような共通クラスを作るか、考える
・考えた各クラスの作成
・各クラスを一つにする
このような流れの中で、私自身、今回各クラスを一つにする工程を担当。
その中で、覚えたことを書き覚えする。
●名前空間
プログラムは名前空間を使ってクラスの分類・階層を整理している。
名前空間を利用してクラスを整理することができる。
宣言方法
name spaceキーワードを使う
階層的に宣言する書き方
:記述方法 その1
namespace N1
{
class A { }
namespace N2
{
classC{ }
}
}
:記述方法 その2
namespace N1.N2
{
calssB{ }
}
※別の名前空間内で定義されたクラスを参照する場合
・名前空間とクラス名を.でつなげた完全修飾子名で指定する
・usingディレクティブを利用する
完全修飾子
修飾子とは
型および型メンバーの宣言を修飾するために使用。
修飾子の種類
public,private,internal,protectedなど様々。型およびメンバーで宣言されたアクセシビリティを指定します。
アクセシビリティとは
近づきやすさやアクセスのしやすさのこと
各修飾子の意味
abstract
クラスが、他のクラスの基本クラスになるためだけのものであること
async
修飾されたメソッド、ラムダ式、または匿名メソッドが非同期であることを示します。
const
フィールドまたはローカル変数の値が変更されないことを指定します。
event
イベントを宣言します
extern
メソッドが外部で実装されることを示します
new
基底クラスから継承されたメンバーを明示的に隠ぺいします。
override
基本クラスから継承された仮想メンバーの新しい実装を提供します
partial
同一アセンブリに部分クラス、部分構造体、または部分メソッドを定義します
readonly
フィールドを宣言します。このフィールドは、宣言の一部として、またはおなじクラスのコンストラクター内でだけ、値の代入ができます。
sealed
クラスの継承ができないことを指定します
static
特定のオブジェクトではなく、型自体に所属するメンバーを宣言します。
unsafe
安全ではないコンテキストを宣言します。
virtual
メソッドまたはアクセサーを宣言します。これらの実装は、派生クラスでオーバーライドするメンバーによって変更できます。
volatile
オペレーティングシステム、ハードウェア、現在実行中のスレッドなどによって、フィールドがプログラム中で変更される場合があることを示します。
●usingディレクティブ
usingディレクティブを使用すると、完全修飾子を使わずにクラス名のみで別々の名前空間に属するクラスを参照できるようになる。
例)
using System;
using System.Windows.Forms;
using ・・・など
●using aliasディレクティブを使うと、
例)
同じ名前のクラスが定義されている別のライブラリを利用する場合、通常であれば、
参照が出現する箇所すべてに完全修飾子を使って、どちらのなのかを明確に記述する必要がある。
エイリアスを使えば、その別名を使って明確に参照できるので、完全修飾子にする必要はなくなる。複数のクラスライブラリを使うと、偶然、名前が同じクラスが定義されている場合もある。そんなときに便利。
例)
namespace N1
{
using DateTime =N2.DateTime;
class Program
{
static void Main(string [ ] args)
{
//usingによりSystem.Text.StringBuilderを参照
var sb = new StringBulder();
//System.DateTimeを参照
var now =dateTime.Now;
//namespace aliasによりN1.N2.MyDateTimeを参照
var dateTime= new MyDateTime();
//namespace aliasがない場合はこのような全ての参照箇所で完全修飾子が必要になる
var dateTime2= new N2.DateTime();
}
}
}
namespace N2
{
public class DateTime{ }
}
共通クラス作成に辺り、ディレクディブを活用し、他の名前空間からプロパティを
取得したり、メソッド、クラスを取得することによって、オブジェクト指向型のものを作り出すことができる。
他の名前空間にあるクラスメソッドを参照したいなら、usingディレクティブを使う!