Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
ジェネリックメソッドの型の制約について
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=42#CommentId282
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
よねKEN
 (社会人)
投稿日時
2008/10/14 22:24:59
こんにちは。
うたひこさんの回答とかぶる部分は省いて、制約についての補足情報を掲載します。
「Visual Basic におけるジェネリック型」より引用。
http://msdn.microsoft.com/ja-jp/library/w256ka79.aspx
>・型引数は、1 つまたは複数のインターフェイスを実装する。
>
>・型引数は、クラスの型そのものであるか、最大 1 つのクラスを継承する。
>
>・型引数はパラメータなしのコンストラクタを公開し、そのコンストラクタからオブジェクトを作成するコードで使用できるようにする。
>
>・型引数は、常に参照型である。または、常に値型である。
と説明があります。つまり、型引数の制約に指定できるのは以下の制約かその組合せだけです。
(1) あるインターフェースを実装していること
(2) あるクラス自身かそのクラスを継承していること
(3) 引数無しのコンストラクタを持つこと
(4) 参照型であること、または、値型であること
数値のみという条件は、(1)~(4)及びその組合せで表現できませんので実現できません。
例のコードでは実際には数値のみという条件ではなく、BitConverter.GetBytesメソッドの
引数として妥当かどうかという条件になっており、BitConverter.GetBytesメソッドのオーバーロード
の引数に(1)~(4)の観点で共通したルールを見出すことはできませんので、
例のようなコードは実現できません。