gpt4 book ai didi

vb.net - VB.NET 中的泛型类型

转载 作者:行者123 更新时间:2023-12-04 09:35:44 25 4
gpt4 key购买 nike

问题很简单。
我有三个像这样的通用结构:
主体结构

Public Structure Pointer(of T) 'Here is where the data type must be constrained
Dim BP As BasePointer
Dim BV As BaseValue(of T)

'Some code
End Structure
指针结构
Public Structure BasePointer 'This is a pointer itself, no problem (I think)
'Some code
End Structure
此结构采用 Pointer(of T) 的约束数据类型
Public Structure BaseValue(Of T)
'Some code
End Structure
据我所知,可以在没有新构造函数的情况下初始化结构。
这个想法是约束某些值类型,但问题是它们可以是,例如,类(作为类型,不是通用容器)、结构(也作为类型,不是通用容器)、IntPtr、Char、Integer、float、delegate ,枚举,接口(interface)等(如您所见,它们是值和引用参数,我不能写( T 作为类)或( T 作为结构),因为我不知道什么类型将被传递)。
该程序的想法是创建一个具有主结构和两个辅助结构的指针。二级结构中的一个获取指针的值,另一个是指针本身。
操作如下:
主要结构捕获类型 T (这是我要进行约束的地方),并且,如果数据类型有效,则将其传递给采用已约束值的二级结构,如果不是,则丢弃它(对于该数据类型,指针是不会被创建)。一旦将类型传递给二级值结构,就会创建指针。
示例:
Dim sample as Pointer(Of ULong)
如果 ULong数据类型在约束范围内,指针将传递给 BV变量(初始化为 BaseValue结构的变量),否则将显示一条消息。
这在一个类中没有问题,因为它必须被强制初始化。在一个类中,即使它具有泛型 T没有约束,在同一个类构造函数中,我创建了约束并得到了它。但是在一个结构中,我不知道如何在不必初始化它的情况下做到这一点。
我不想指向所有现有数据类型,只指向我认为更常用的那些(大约 20、25 左右,但数据类型不同)。这就是数据限制的原因。
之前忘了说如果可以的话可以写在 C# ,我或多或少理解,我想我可以翻译它。
再次,提前感谢。

最佳答案

这不是泛型的工作方式。这个想法是,在泛型类型或方法中,您可以确保泛型类型参数具有特定的功能。例如,您可以约束 T实现IComparable接口(interface),然后,在您的类型或方法中,您知道您可以在任何 T 上访问该接口(interface)的成员。实例。你可以约束 T成为一个具体的具体类型,然后你知道任何 T instance 将具有该类型的成员。泛型类型约束基本上是说您保证能够使用任何 T以特定方式举例。这么说T可以是任何类型列表中的任何一个,并且不提供任何不保证能够使用 T 的类型列表。以特定方式实例化,因此不适用于泛型。

关于vb.net - VB.NET 中的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62601058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com