如何:将用户定义的类型转换为 Visual Basic 结构

更新:2007 年 11 月

Visual Basic 6.0 的 Type 语句升级为 Visual Basic 2008 的 Structure 语句。此主题还讨论了用于升级类型的另两个选项:转换为类和转换为接口。

下面的 Visual Basic 6.0 类型将在后面的过程中讨论:

Type Customer
    Dim FirstName As String
    Dim LastName As String
    Dim Id As Long
End Type

Private Function FormatFullName(aCustomer As Customer) As String
    FormatFullName = aCustomer.FirstName & " " & aCustomer.LastName
End Function

“升级向导”自动将 Visual Basic 6.0 类型升级为 Visual Basic 2008 结构。Structure 是一种支持成员(如方法和属性)的类型。

将类型升级为结构

  1. 运行“升级向导”。

    说明:

    “升级向导”是一个用于将 Visual Basic 6.0 应用程序升级到 Visual Basic 2008 的工具。在 Visual Basic 2008 中打开一个 Visual Basic 6.0 项目时,该向导会自动启动。有关更多信息,请参见 如何:用 Visual Basic 升级向导升级项目

  2. 如果您想利用 Structure 类型的其他功能,请查找结构中更合适的方法。在此示例中,FormatFullName 方法可以转换为结构中的 FormatFullName 方法:

    Structure Customer
        Dim FirstName As String
        Dim LastName As String
        Dim Id As Integer
    
        Public Function FormatFullName() As String
            Return FirstName & " " & LastName
        End Function
    End Structure
    

“升级向导”自动将 Visual Basic 6.0 类型升级为 Visual Basic 2008 结构。Class 类型支持与 Structure 相同的成员,但它是引用类型。类可以用作基类,而结构则不能。

升级为类

  1. 运行“升级向导”。

  2. 将 Structure 替换为 Class。

  3. 如果您想利用 Class 类型的其他功能,请在结构中查找更适宜的方法。下面的代码演示 FormatFullName 到类的合并以及 Id 属性。

    Class Customer
        Dim FirstName As String
        Dim LastName As String
        Private idValue As Integer
    
        Public Property Id() As Integer
            Get
                Return idValue
            End Get
            Set(ByVal Value As Integer)
                idValue = Value
            End Set
        End Property
    
        Public Function FormatFullName() As String
            Return FirstName & " " & LastName
        End Function
    End Class
    

第三个选项为将结构转换为接口。

升级为接口

  1. 运行“升级向导”。

  2. 将 Structure 替换为 Interface。

  3. 将变量替换为属性声明。不包含实现。

  4. 添加方法,但移除实现。

  5. 代码可能类似于:

    Interface Customer
        Property FirstName() As String
        Property LastName() As String
        Property Id() As String
    
        Function FormatFullName() As String
    End Interface
    
  6. 这样,该接口就可由另一个类实现。定义如下所示。

    Class NewCustomer
        Implements Customer
    
        Public Property FirstName() As String Implements Customer.FirstName
            Get
                ' Add code here.
            End Get
            Set(ByVal Value As String)
                ' Add code here.
            End Set
        End Property
    
        Public Property Id() As String Implements Customer.Id
            Get
                ' Add code here.
            End Get
            Set(ByVal Value As String)
                ' Add code here.
            End Set
        End Property
    
        Public Property LastName() As String Implements Customer.LastName
            Get
                ' Add code here.
            End Get
            Set(ByVal Value As String)
                ' Add code here.
            End Set
        End Property
    
        Public Function FormatFullName() As String _
            Implements Customer.FormatFullName
            ' Add code here.
        End Function
    End Class
    

请参见

任务

如何:用 Visual Basic 升级向导升级项目

参考

Structure 语句

Class 语句 (Visual Basic)

Interface 语句 (Visual Basic)