如何:将用户定义的类型转换为 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 是一种支持成员(如方法和属性)的类型。
将类型升级为结构
运行“升级向导”。
说明: “升级向导”是一个用于将 Visual Basic 6.0 应用程序升级到 Visual Basic 2008 的工具。在 Visual Basic 2008 中打开一个 Visual Basic 6.0 项目时,该向导会自动启动。有关更多信息,请参见 如何:用 Visual Basic 升级向导升级项目。
如果您想利用 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 相同的成员,但它是引用类型。类可以用作基类,而结构则不能。
升级为类
运行“升级向导”。
将 Structure 替换为 Class。
如果您想利用 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
第三个选项为将结构转换为接口。
升级为接口
运行“升级向导”。
将 Structure 替换为 Interface。
将变量替换为属性声明。不包含实现。
添加方法,但移除实现。
代码可能类似于:
Interface Customer Property FirstName() As String Property LastName() As String Property Id() As String Function FormatFullName() As String End Interface
这样,该接口就可由另一个类实现。定义如下所示。
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