プログラミング系のネタをまとめていきます。

ジェネリックの型制約


where句を使うと、型パラメータに制約をかけられる。

class MyClass1<T>
	where T : class		// TはクラスならなんでもOK
{
}

class MyClass2{}

class MyClass3<T>
	where T : MyClass2	// TはMyClass2、またはその派生クラス
{
}

複数指定する場合。

class MyClass1{}
class MyClass2{}

class MyClass1<T, U>
	where T : MyClass1
	where U : MyClass2
{
}

値型を型パラメータで扱う


class MyClass<T>
	where T : struct		// Tは値型
{
	private T m_param;
}

{
	MyClass<int> myClass = new MyClass<int>();
}

enumを型パラメータで扱う


enumは値型に含まれるので、intと同様に型制約の指定ができる。

class MyClass<T>
	where T : struct		// Tは値型
{
	private T m_param;
}

enum MyEnum
{
	INDEX0 = 0,
	INDEX1,
	INDEX2
}

{
	MyClass<MyEnum> myClass = new MyClass<MyEnum>();
	myClass.m_param = MyEnum.INDEX0;
}

Menu

メインコンテンツ

プログラミング

機器

Macツール

各種情報

Wiki内検索

おまかせリンク

Androidアプリ

AdSense

技術書


管理人/副管理人のみ編集できます