掲示板お問い合わせランダムジャンプ

Top Index

2008年01月13日
List(Of T)の型変換
このエントリーをはてなブックマークに追加
[VB2008で検証]
配列にセットできる型が指定できるList型がお気に入りなのですが、型変換をする時がやっかいです。

たとえば、List(Of Integer)型のデータをList(Of String)型に型変換するのはCType関数だけでは実現できません。
Listを型変換するのではなく、Listの中にあるアイテムを型変換する必要があるからです。

であるなら、単純に
  List(Of Integer)型のアイテムを1つずつ呼び出して、
  String型に変換し、
  それをList(Of String)型にセット
とすればできるわけですが、汎用性が低いです。

そこでジェネリックを使って汎用的な型変換関数を作ってみることにします。
以下、ソースコード。
01Public Class Form1
02
03    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
04        Dim aryA As New List(Of Integer)
05        For i As Integer = 0 To 9
06            aryA.Add(i)
07        Next
08        Dim aryB As New List(Of String)
09        '以下のように書くと 型変換できません とエラーになってしまう
10        'aryB = aryA
11        aryB = Me.ListTypeConvert(Of String)(aryA)
12    End Sub
13
14    Public Function ListTypeConvert(Of T)(ByVal arys As ICollection) As List(Of T)
15        Dim lst As New List(Of T)
16        For Each obj As Object In arys
17            lst.Add(CType(obj, T))
18        Next
19        Return lst
20    End Function
21
22End Class
 powered by vb2html ver2.1b


このように記述すれば、List(Of Integer) から List(Of String) への変換であろうが、
その逆であろうが、1つの関数で対応できます。
[ 投稿者:mk3008 at 17:11 | VB.NET | コメント(0) | トラックバック(0) ]

この記事へのコメント

この記事へのトラックバック

この記事へのトラックバックURL
http://shinshu.fm/MHz/88.44/a02480/0000222653.trackback

この記事の固定URL
http://shinshu.fm/MHz/88.44/archives/0000222653.html

記事へのコメント
 
簡単演算認証: 4 x 7 =
計算の答えを半角英数字で入力して下さい。
名前: [必須]
URL/Email:
タイトル:
コメント:
※記事・コメントなどの削除要請はこちら