Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

Genericにこんな仕様が欲しい

public class C(of T)
    Public Function AB(ByVal lst As List(Of T)) As Boolean
        Dim a1 As New T
        lst.Add(a1)
    End Function
end Class

 「'New' は、'New' 制約がない型パラメータで使用できません。」と.コンパイルErrorで叱られます。
言語仕様上ダメなんでしょうが, [継承元のクラスで 型T をインスタンス化して listに追加する] これが可能なら, もっと抽象化が可能になる.. と勝手に思っています。
どこか変ですかね?

 

投稿日時 : 2006年9月15日 1:08

Feedback

# re: Genericにこんな仕様が欲しい 2006/09/15 10:57 επιστημη

Public Class C(Of T As New) '← 注目!
...
End Class

# re: Genericにこんな仕様が欲しい 2006/09/15 11:51 青柳 臣一

C# だと
  public class C<T> where T : new()
ですね。
VB ではそんな風に書くんですか。知らなかったです。

http://msdn2.microsoft.com/ja-JP/library/w256ka79.aspx
http://msdn2.microsoft.com/ja-jp/library/d5x73970.aspx

# re: Genericにこんな仕様が欲しい 2006/09/15 13:05 επιστημη

なんか'きしょい'っすね。
Dim i As Integer ← i を Integer として宣言
Of T As New ← T を New として仮決め … いみふめ

# re: Genericにこんな仕様が欲しい 2006/09/15 23:46 ognac


επιστημη さん, 青柳 臣一 さん。
早速のすばらしいコメントをありがとうございます。

>Public Class C(Of T As New) '← 注目!
>...
>End Class

確かに目からうろこです。 型定義文の箇所に of T as New と記述可能とは!!
インテリセンスを注意深く働かせると気づくのかもしれませんが,が見落としてしまいますね。

>なんか'きしょい'っすね。
たしかに,綺麗くない気がします。
c#での nullable変数の宣言文も
int? nullable1 = null;

と書くのは、引いてしまいます。
 苦し紛れの記述方法しか残ってないのでしょうね?

おかげ様で,Generic側で インスタンス生成しデータの蓄積が可能になりました。ありがとうございました。




タイトル
名前
Url
コメント