在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)

链接地址: http://www.djcxy.com/p/56825.html

上一篇: What is the equivalent or workaround for a typedef in VB.NET?

下一篇: How to send out pointer event in Android