在VB.NET中使用typedef的等效方法或解决方法是什么?
我正在编写一个严重处理集合类型的VB.NET应用程序。 请参阅下面的代码:
Dim sub_Collection As System.Collections.Generic.Dictionary(Of String,
System.Collections.ObjectModel.Collection)
我必须多次输入上述行。 如果我更改了集合类型,那么我必须对所有实例进行更改。 因此,如果有一种方法可以使用“typedef等效”,那么我可以摆脱所有这些问题。 我尝试使用导入,但它仅适用于名称空间,不能用于类。 任何援助之手将不胜感激。
注意:我使用VB 2008,Windows XP。 应用程序类型是Windows窗体(VB)。
编辑:我做了一些基于code_gray下面的答案的尝试。
这是第一次尝试。
Imports dictionary_WaterBill = System.Collections.Generic.Dictionary(Of String, System.Collections.ObjectModel.Collection(Of WaterBill))
Structure WaterBill
...
...
End Structure
我得到了错误
Error:Type 'WaterBill' is not defined.
这是尝试2。
Structure WaterBill
...
...
End Structure
Imports dictionary_WaterBill = System.Collections.Generic.Dictionary(Of String,
System.Collections.ObjectModel.Collection(Of WaterBill))
我得到了错误
Error:'Imports' statements must precede any declarations.
欢迎任何人就此问题发表看法。
创建一个没有内容的继承类:
Class WaterBillDictionary
Inherits System.Collections.Generic.Dictionary(Of String, System.Collections.ObjectModel.Collection(Of WaterBill))
End Class
Structure WaterBill
...
End Structure
如果你想要一个特定的构造函数,你必须编写一个接受参数的包装器并将它们传递给基础构造器。 例如:
Public Sub New()
MyBase.New()
End Sub
Public Sub New(capacity As Integer)
MyBase.New(capacity)
End Sub
如果您需要更改WaterBillDictionary
的名称, WaterBillDictionary
可以使用Visual Studio的重命名功能自动更改整个解决方案中的名称。
简单的解决方案仅仅是为您正在使用的两个名称空间添加一个Imports
语句。 马上蝙蝠,这消除了你的长型标识符的一半。
在代码文件的顶部,放置行:
Imports System.Collections
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
然后您的声明可以更改为:
Dim sub_Collection As Dictionary(Of String, Collection)
我推荐这种方法,因为它仍然使用标准名称,这使您的代码易于为其他程序员阅读。
另一种方法是使用Imports
语句来声明别名。 就像是:
Imports GenericDict = System.Collections.Generic.Dictionary(Of String,
System.Collections.ObjectModel.Collection)
然后你可以改变你的声明为:
Dim sub_Collection As GenericDict
***顺便说一下,为了获得这些样本中的任何一个来编译,您必须指定Collection
的类型,例如Collection(Of String)
。
上一篇: What is the equivalent or workaround for a typedef in VB.NET?