2012-03-23 12 views
0

配列型のオブジェクトのプロパティを設定したいとします。配列プロパティを新しい初期化配列に1行で設定する方法

私は宣言してオブジェクトの配列を初期化している場合、私はこれを行うだろう:

Dim x() as SomeObject = {obj1, obj2} 

私はプロパティと似た何かを行うことができるようですが、あなたがこれを行うことができ、しないでください誰でも正しい構文を知っていますか?

myObj.ArrayProperty = {obj1, obj2} 

私が最初に{

Infer Off 
Explicit On 
Strict On 

回答に表現予想されるエラーを取得:でのVisual Studio 2010の下

この作品:あなたは新しいキーワードの元を必要とする

myObj.ArrayProperty = New objType() {obj1, obj2} 
+0

厳密で明示的なオプションは何を推測していますか? http://msdn.microsoft.com/en-us/library/bb384665.aspx –

+0

@TimSchmelter更新された質問 –

答えて

1

をターゲットフレームワーク2.0

Module Module1 

Sub Main() 
    test = New String() {"a", "a"} 
End Sub 

Public Property test As String() 


End Module 
+1

VB.NETではなく、これはVBの質問です。 http://blogs.lessthandot.com/index.php/DesktopDev/MSTech/collection-and-array-initializers-in –

+0

これは機能しませんでした。私はmyObj.ArrayProperty =新しいobjType(){obj1、obj2}を試しました –

+1

私の悪い、更新されました – Fredou

1

おそらく、あなたはあなたが作成し、これにオブジェクトを追加する前に、アレイを作成する必要があり、この

Dim x As SomeClass() = New SomeClass() { _ 
    New SomeClass With {.ID = 1, .Name = "John"}, _ 
    New SomeClass With {.ID = 2, .Name = "Sue"} _ 
} 

を探しています。

オブジェクトが配列型であると言うのは間違いです。私はあなたが何らかのタイプの配列を持っていると言いたいと思います。配列を初期化するときに、そのタイプのオブジェクトを追加したいと同時に、これらのオブジェクトのプロパティを初期化します。プロパティは配列内のオブジェクトに属し、配列自体には属しません。

変数の後ろに括弧を配置するVBの方法は混乱します。 VBでは配列のかっこを型の後ろに置くことができますが、これは私にはもっと論理的です。


UPDATE:(変数とは違って)

プロパティの初期化子を持っていません。バッキング変数を初期化することもできます。

Private _myArrayProperty As SomeClass() = New SomeClass() { _ 
    New SomeClass With {.ID = 1, .Name = "John"}, _ 
    New SomeClass With {.ID = 2, .Name = "Sue"} _ 
} 

Public Property MyArrayProperty() As SomeClass() 
    Get 
     Return _myArrayProperty 
    End Get 
    Set(ByVal value As SomeClass()) 
     _myArrayProperty = value 
    End Set 
End Property 

後でプロパティに新しい配列を割り当てる場合、あなたはあなたが変数初期化子でNew SomeClass()をドロップすることができ、この

obj.MyArrayProperty = New SomeClass() { _ 
    New SomeClass With {.ID = 1, .Name = "John"}, _ 
    New SomeClass With {.ID = 2, .Name = "Sue"} _ 
} 

ようにそれを行うことができます。ただし、他の式では、明示的にNew SomeClass() { ...を指定する必要があります。単純な構文はイニシャライザにのみ適用されます。

+0

申し訳ありませんが、私が探しているものではなく、例からわかるように、私は上記の方法を知っています。私は配列とinitに同時にプロパティを設定したい。私はすでに配列のオブジェクトを他の場所でインスタンス化しています。タイプは問題の目的には関係ありません。 –