Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在.NET中是否有用于此的内置泛型类?_Vb.net_Generics - Fatal编程技术网

Vb.net 在.NET中是否有用于此的内置泛型类?

Vb.net 在.NET中是否有用于此的内置泛型类?,vb.net,generics,Vb.net,Generics,是否有一个类正好等于这个类 Class X(Of T) Public value As T End Class 请注意,Nullable(Of T)和Tuple(Of T)都不等于此类,因为它们不允许您设置成员值。该类应具有以下属性: 当作为参数传递时,被调用的方法所做的任何更改都会影响发送的对象,即,它不应该像对内部类型所做的那样创建对象的副本 应允许使用语法x.value=将成员值设置为值,其中x是x的对象 这不是一个结论性的答案,但我会试一试 我个人以前从未见过这种类型的课程。即

是否有一个类正好等于这个类

Class X(Of T)
    Public value As T
End Class
请注意,
Nullable(Of T)
Tuple(Of T)
都不等于此类,因为它们不允许您设置成员值。该类应具有以下属性:

  • 当作为参数传递时,被调用的方法所做的任何更改都会影响发送的对象,即,它不应该像对内部类型所做的那样创建对象的副本
  • 应允许使用语法
    x.value=
    将成员
    值设置为值,其中x是x的对象

  • 这不是一个结论性的答案,但我会试一试

    我个人以前从未见过这种类型的课程。即使是关于泛型的文档也显示了一个与您类似的示例类,该类正在示例中创建和使用:

    下面是一个例子:

    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
    

    我有时几乎一字不差地创建了这样一个类,尽管我调用了类
    Holder
    和字段
    Value
    ;对于这样一个类,有两个很好的用例:

    • 给定
      持有者的集合
      ,可以对集合的内容执行方便的就地修改。例如,给定一个
      列表
      ,可以说
      MyList[3].Value.X+=5

    • 如果
      T
      属于允许原子操作的类型,则可以对
      Holder
      集合的内容执行线程安全的原子操作,即使该集合不是线程安全的。例如,在一个场景中,我预先知道字典需要的所有键,我创建了一个
      字典
      ,然后可以让多个线程使用
      联锁。增量
      来计算每个字符串出现的次数。尽管
      字典
      不是线程安全的,但程序在没有锁定的情况下是线程安全的,因为字典中存储的
      持有者
      项集从不需要更改


    如果您想使用内置类型,有一种可以工作:大小为1的
    T[]
    。该类型的主要缺点是,该类型中没有任何固有的东西可以保证元素零实际存在(即,它不会是空数组)。

    是的。这似乎是一些证据。谢谢我将等待更多的输入,然后将“否”标记为答案。这很公平。我也很想知道这一点。我相信你已经意识到了,但以防万一你没有意识到,或者其他人在将来无意中发现了这一页不是。。。。您熟悉
    ByRef
    modifier关键字,对吗?是的,我熟悉。但对我来说不起作用。我需要将变量传递给QueueUserWorkItem的回调委托,该委托恰好具有“委托子WaitCallback(状态为Object)”的定义。因此,发送ByRef不是一个选项。我将在回调函数中修改变量,然后在回调完成后在主线程中检查其值。即使发送一个对象(ref类型)也不是一个解决方案,因为在回调函数中为state变量赋值将使原始对象保持不变。所以我需要一个REF类型,在其中封装一个VAL类型。你听起来像是知道你在做什么的人,但我觉得有必要提一提。随身携带:)