CTS 型


構造体とエイリアス

実は、私たちは知らないうちに .NET ライブラリの構造体を使用していた
この構造体は、.NET 開発環境となるあらゆる言語が使用できるようになっている

C# はこれを構造体と意識せずに値型として利用できる仕組みを持っている
そう、実は int とか char というのは、CTS が定義している構造体なのです
C# は、これらを構造体のエイリアス(alies : 別名)として定義しているのです
その関係は、次のように構成されています

構造体C# エイリアス
System.ObjectObject
System.Stringstring
System.Charchar
System.SBytesbyte
System.Bytebyte
System.Int16short
System.UInt16ushort
System.Int32int
System.UInt32uint
System.Int64long
System.Int64ulong
System.Singlefloat
System.Doubledouble
System.Booleanbool
System.Decimaldecimal

これまでのようにエイリアスを使うか、構造体を使うかは好みの問題です
この事実がわかれば、プリミティブな値型変数もボクシング可能であり
.NET テクノロジが強力な型の一貫性を持っていることがわかりますね
class Test {
	static void Main() {
		System.Int32 i = 10;
		System.Object obj = i;
		GetInt32(obj);
	}
	static void GetInt32(System.Object obj) {
		System.Console.WriteLine((System.Int32)obj);
	}
}
このプログラムでは、エイリアスである int の代わりに System.Int32 を使っています
これがボクシングされ、GetInt32() メソッドに渡されています
System.Int32 を int に替えてコンパイルしても意味はまったく同じです



前のページへ戻る次のページへ