2012-03-06 14 views
2

List(Of文字列)をvbのObjectに変換する方法を探しています。ですから、最終的には、Dim cArray()As Object = new Objectを宣言するのと同じになります。どのように私はこれを達成することができます誰も私を指摘できますか?文字列配列を作成するLINQ .ToArrayは使用できません。これは私の仕事では受け入れられません。このオブジェクトをパラメータ(aArrayをObjectとして)を持つ別のオブジェクトに渡す必要があります。文字列のリストをオブジェクトに変換する

おかげ

答えて

2

あなたは、単にこれを呼び出すことができます上の任意の種類リストの

Module Module1 

    <System.Runtime.CompilerServices.Extension()> _ 
    Public Function ToObject(Of T)(ByVal aList As List(Of T)) As List(Of Object) 
     Dim res As List(Of Object) 
     Try 
      If aList IsNot Nothing Then 
       res = aList.Select(Function(f) CType(f, Object)).ToList 
      End If 
     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
     Return res 
    End Function 

End Module 

今、あなたは任意のリストの中でそれを見ることができます:

Dim iL As New List(Of Integer) 
Dim ObjiL = iL.ToObject 

Dim sL As New List(Of String) 
Dim ObjsL = sL.ToObject 
... 
+4

あなたはそれをする必要はありません、 '.Cast(Of Object)'は同じものですが短いです。 – Ryan

+1

+1、@minitech、はい、それは本当ですが、私は拡張機能についてジョンの目を開き、新しい答えのアイデアを作りたい –

4

だから、あなたは、単一のObjectに配列全体を渡したいですか?これは暗黙の変換であり、何もする必要はありません。配列がObjectの場合、.Cast(Of Object)().ToArray()を使用できます。しかし、2つの間で不要なキャストを避けるために可能な限り宛先メソッドを変更することを検討してください。

+0

私がそれを試してみると、コンパイラは私にSystem.ArgumentNullExceptionを与えます:値はnullにはできません。 –

+1

@JohnBaum:手元の問題の一部ではありません。両方の方法のソースを投稿できますか? – Ryan

0

あなたはタプルオブジェクトを作成し、このに刺されのリストを渡すことができます。

Dim testVariable = Tuple.Create("string1", "string2", "string3") 
1

minitechが言ったように、あなたは本当に何もする必要はありません。私は、次のコードを試みたが、それはエラーなしで構築された:あなたはあなたができる拡張機能させることにより、すてきなアプローチをすることができます

SomeStringList.Select(Function(f) CType(f, Object)).ToList 

または:

dim myListOfString As List(Of String) = New List(Of String) 
' Initialize your list of string here 

' and 

dim obj as Object = myListOfString 
関連する問題