2009-08-21 8 views
3

なぜVisual Basicコンパイラが文句を言うのですか?System.Arrayを初期化しますか?

Dim finalArray As Array = New Array 
+0

これはキーボードのスリップですが、あなたは*が文句を言っていますか? – Marc

+1

配列に格納するオブジェクトのタイプは何ですか? – StingyJack

答えて

1

Visual Studioのどのバージョンを使用していますか?

Error 1 'New' cannot be used on a class that is declared 'MustInherit'. C:\Documents and Settings\---\My Documents\Visual Studio 2008\Projects\---\Default.vb 171 39 --- 
+0

私は彼が質問するつもりだったと思う:「それはなぜ不平を言うの? ... – awe

1

なぜ

Dim finalArray as New ArrayList() 

本当に、あなただけのオブジェクトの特定のタイプを格納している場合、あなたはジェネリックを使用する必要があります。

Dim finalArray as New List(Of Integer) 
Dim finalArray as New List(Of String) 
Dim finalArray as New List(Of YourFavoriteObject) 

(そして、ずさんなVB6プログラマもいけない...コンストラクタやその他の方法コールにそれらPerensさんを追加します。)

+0

hes配列を使用して、arraylistではない – Fredou

+0

その点です。理由はありません。 – StingyJack

+0

あなたは彼が何をする必要があるか分からず、決して何も仮定しません:-) – Fredou

2

EDIT:(ジョー・チョン発言の後)

msdn:

MustInheritクラスを に直接インスタンス化することはできません。したがって、 New operat MustInheritクラスの では使用できません。 それが変数を持っている 可能だと そのコンパイル時の型が MustInherit、そのような変数されている値とMustInheritタイプから 派生 は必ずしもヌル 値であるか、通常のクラスの インスタンスへの参照が含まれています値のいずれかが。

+0

実際に彼の状況です –

4

配列は、抽象クラス(VB用語ではMustInherit)です。抽象クラスをインスタンス化することはできません。サイズは5で、String
例の作成配列:

+0

+1。 – MarkJ

0

あなたは、配列の種類とサイズを指定する必要があります

Dim finalArray As Array = Array.CreateInstance(GetType(String), 5) 
2

他の人が言ったように、それは文句ありません。恐ろしいことに、配列の型とサイズを指定する必要があります。配列初期化子で行うことができます。

Dim finalArray As Array = New Integer() {1, 2, 3} 

しかし、配列に割り当てると、型情報が失われます。何をする方がよい:

Dim finalArray As Integer() = {1, 2, 3} 

あなたは、インデックスによってアクセスできる整数の配列を持っている、とあなたはまだアレイのすべてのメソッドを使用することができますこの方法です。

関連する問題