我正在编写一个VB.NET应用程序,它大量处理集合类型。请参阅以下代码:
Dim sub_Collection As System.Collections.Generic.Dictionary(Of String,
System.Collections.ObjectModel.Collection)
我必须多次键入上面的行。如果我更改了集合类型,那么我必须对所有实例进行更改。因此,如果有一种方法可以使用“typedef equivalent”,那么我可以摆脱所有这些问题。我尝试使用导入,但它仅用于命名空间,不能用于类。非常感谢任何帮助。
注意:我使用的是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.
欢迎任何人就此问题发表意见。
答案 0 :(得分:3)
简单的解决方案就是为您正在使用的两个名称空间添加Imports
statement。马上就可以消除一半的长型标识符。
在代码文件的顶部,放置以下行:
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)
。
答案 1 :(得分:2)
创建一个没有内容的继承类:
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
的名称,可以使用Visual Studio的重命名功能自动更改整个解决方案中的名称。