为什么这些类似的变量声明有不同的类型?

时间:2017-03-23 01:25:50

标签: .net vb.net syntax

Dim X为New Y vs. Dim X为Y = New Y()新问题: 对此主题的后续问题: Dim X as New Y vs. Dim X as Y = New Y()

我正在运行VS2015(VB 14)有人可以帮助我吗?鉴于此课程:

Public Class Form1
    Dim test3 As New Example
    Dim test4 = New Example
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim test1 As New Example
        Dim test2 = New Example
        test1.Mylist.Add("1")
        test2.Mylist.Add("2")
    End Sub
End Class
Class Example
    Public Sub New()
        Mylist = New List(Of String)
    End Sub
    Public Mylist As List(Of String)
End Class

Test4属于对象类型而非预期的示例。

谢谢,-TD

1 个答案:

答案 0 :(得分:2)

你的困惑是可以理解的,是语言支持的语法糖的结果。您正在利用第一个示例中的Local Type Inference (Visual Basic)。这一点糖仅适用于程序级别,这是> df_split <- split(df, f=df$CHR) # then I generate a function, involving "cut" function > bins <- function(df){ lower <- min(df$POS) upper <- max(df$POS) cut(df$POS, seq(lower,upper, 10)) } # finally i used lapply, incorporating my personalizad "cut" function > bin_1 <- lapply(df_split, bins) test1属于test2类型的原因。

在你的第二个例子中:

Example

变量Dim test1 As New Example Dim test2 = New Example Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load test1.Mylist.Add("1") test2.Mylist.Add("2") End Sub 在类级别声明,因此不适用于类型推断。因此,如声明的那样,它将是Object类型。代码将转换为类似于以下内容的代码。

test2

编辑:我在输入这个答案时编辑了原始帖子,但推理仍然相同。因此,我不会修改此内容以反映原始邮政编码示例的更改。