为什么Visual Basic编译器会抱怨?
Dim finalArray As Array = New Array
答案 0 :(得分:4)
Array是一个抽象类(VB术语中为MustInherit)。您无法实例化抽象类。
答案 1 :(得分:2)
编辑:(在Joe Chung评论之后)
MustInherit类不能 直接实例化,因此 New运算符不能用于 MustInherit类。 虽然是 可能有变量和值 编译时的类型是 MustInherit ,这样的变量和值 必然要么是空的 值或包含对的引用 派生常规类的实例 来自MustInherit类型。
答案 2 :(得分:2)
正如其他人所说,它会抱怨。敬畏是对的,你必须指定数组的类型和大小。您可以使用数组初始值设定项执行此操作:
Dim finalArray As Array = New Integer() {1, 2, 3}
但是当您将其分配给数组时,会丢失类型信息。最好这样做:
Dim finalArray As Integer() = {1, 2, 3}
这样你就可以通过索引访问一个整数数组,你仍然可以使用Array的所有方法。
答案 3 :(得分: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 ---
答案 4 :(得分: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。)
答案 5 :(得分:0)
您必须指定数组的类型和大小:
创建String
数组的示例,大小为5:
Dim finalArray As Array = Array.CreateInstance(GetType(String), 5)