是否有一个类与此类完全相同?
Class X(Of T)
Public value As T
End Class
请注意,Nullable(Of T)
和Tuple(Of T)
都不等于此类,因为它们不允许您设置成员值。该类应具有以下属性:
value
将成员x.value = <some value>
设置为值,其中x是X的对象。答案 0 :(得分:1)
不是一个确凿的答案,但我会试一试。
我个人以前从未见过这种类型的课程。甚至关于泛型的文档也显示了一个与您的类似的示例类,这些类在示例中被创建和使用:
msdn generics in the .net framework.
以下是示例:
Public Class Generic(Of T)
Public Field As T
End Class
....
Public Shared Sub Main()
Dim g As New Generic(Of String)
g.Field = "A string"
'...
Console.WriteLine("Generic.Field = ""{0}""", g.Field)
Console.WriteLine("Generic.Field.GetType() = {0}", g.Field.GetType().FullName)
End Sub
答案 1 :(得分:1)
虽然我打电话给班级Holder<T>
和字段Value
,但我有时几乎逐字地创建了这样一个班级。这样一个类有两个很好的用例:
给定Holder<someValueType>
的集合,可以对集合的内容进行方便的就地修改。例如,给定List<Holder<Point>>
,可以说MyList[3].Value.X += 5;
。
如果T
属于允许原子操作的类型,则即使集合不是线程安全的,也可以对Holder<T>
集合的内容执行线程安全的原子操作。例如,在我事先知道字典需要的所有密钥的一个场景中,我创建了一个Dictionary<String, Holder<Integer>>
,然后可以让多个线程使用Interlocked.Increment
来计算每个密钥的次数那些字符串出现。即使Dictionary
不是线程安全的,程序也是线程安全的而没有锁定,因为存储在字典中的Holder<Integer>
项集永远不会改变。
如果您想使用内置类型,可以使用内置类型:T[]
,大小为1。这种类型的主要缺点是类型中没有固有的东西可以保证元素零实际存在(即它不是一个空数组)。