首页 > 解决方案 > 没有“As”子句的变量声明;假定的对象类型

问题描述

Dim myArray = New Integer()  {1,2,1,3,3,1,2,1,5,1}
Public Sub Main() 
 Dim mayor As Integer = 0
Dim i As Integer = 0
Do While (i < myArray.Length)
    If ((myArray(i) < 1)  _
                OrElse (myArray(i) > 100)) Then
        Console.WriteLine("enteros fuera del rango de 1 a 100")
        Exit For
    End If
    
    If (i > mayor) Then
        mayor = myArray(i)
    End If
    
    i = (i + 1)
Loop

If (mayor > 0) Then
    Console.WriteLine(mayor)
End If
End Sub

我正在尝试运行此代码,但出现此错误变量声明没有“As”子句;假定的对象类型。

标签: pythonvb.netsyntax

解决方案


myArray变量是一个字段,即成员变量。只有局部变量才能使用类型推断。您必须指定字段的类型。

在方法中声明局部变量时,编译器必须能够确定该变量的类型。这通常意味着使用一个As子句来明确指定它:

Dim var As SomeType

如果您在声明它的位置初始化变量:

Dim var As SomeType = someValue

然后,假设您有Option Infer On(默认情况下),您可以省略该As子句并从初始化表达式中推断出变量的类型:

Dim var = someValue

在这种情况下,var将与someValue. 你需要一个子句的唯一原因As是如果你想var成为一个不同的类型,例如你想要一个Control变量但你用 a 初始化它,Button或者你想要 anIEnumerable(Of T)但你用 a 初始化List(Of T)

我在这里演示的称为“类型推断”,但它仅对局部变量有效,即在方法中声明的变量。字段,即在变量之外声明的变量,必须使用As子句显式键入。在你的情况下,使用这个:

Private myArray As Integer() = {1,2,1,3,3,1,2,1,5,1}

请注意显式访问修饰符 ( Private)、As子句和文字数组的使用。


推荐阅读