トップ回答者
ジェネリック型制約の使い方について

質問
-
次のようにジェネリック型制約について質問です。
1つ目のクラスは、CHNならC,H,Nの3プロパティ, CHならC,Hプロパティ, CNならC,Nプロパティを持つクラスを3つ作るとします。
class CHN<T> : 元素インターフェース { T C {get;set;} T H {get;set;} T N {get;set;} } class Linear { double AX { get;set; } double B { get;set; } } class 実装クラス<T> : where T : 元素インターフェース { T<double> Mass; // 重さ T<Linear> Function; // 傾き }
実装クラス<T>はCHNやCHを指定して、なおかつ3つ目のクラスのとおりCHNの<T>は使い分けたいです。
こういうものは可能なのでしょうか。
よろしくお願いします。
- 編集済み ichiethel 2015年1月15日 4:51
回答
すべての返信
-
trapemiyaさん返信ありがとうございます。
やりたいことはそれで違いありません。ただ、私の説明がへたなようです。すいません。T1一つですませられないか気になっています。
class 実装クラス<T1, T2> : where T1 : 元素インターフェース where T2 : 元素インターフェース
{
T1 Mass; // 重さ
T2 Function; // 傾き
}
返信のとおり、以下の1と同じことをしたいと考えています。
CHNのTの部分はdouble, Functionで今回固定なので、クラス部分で固定してしまって、2のようにコード部分ではコードを少なくできないか気になっています。
1 var a = new 実装クラス<CHN<double>, CHN<Function>>;
2 var b = new 実装クラス<CHN>;
ただ、2だとCHNは型として正しく認識できていないようなので、やっぱり無理なのでしょうか。