C♯相談室 Part26
■ このスレッドは過去ログ倉庫に格納されています
0704デフォルトの名無しさん
2005/10/27(木) 15:03:46C++のtemplateとは違って、.NETのGenericsは実行時解決。
コンパイル時に整合性は見るけど実際に展開はしない。
だからKは飽くまでK。
objectにキャストしたらOKなのは、object型は全てのクラスの継承元で暗黙にキャストできるから。
コンパイラはobject型から任意の型へのキャストを撥ねようがない。
(K)thisでは、objectを通らず直接キャストになるから、
KまたはBaseがexplicit/implicit operator K(Base b)を定義してなきゃならない。
でもKに対して定義しようはない。ので無理。
C++のtemplateならコンパイル時に解決するから、Kに実際に置かれた型が型変換演算子を定義しているかどうかは判断できるんだが。
■ このスレッドは過去ログ倉庫に格納されています