类型名称中的反引号在Visual Studio调试器中意味着什么?

ber*_*436 6 vb.net generics visual-studio

当您Debug.Print在Visual Studio 2010调试器中使用某些对象类型时,输出包括反引号.反引号是什么意思?

Dim myList as List = a List
Debug.Print(myList.GetType().ToString()
Run Code Online (Sandbox Code Playgroud)

立即窗口调试器中的输出:

System.Collections.Generic.List`1[System.String]

Bas*_*sic 6

它表示后续数组中的项目数。该数组包含泛型类型。

List(Of String)有一种泛型类型,即string

尝试创建一个SomeClass(Of T as String, U as Integer),看看你得到了什么......

Public Class TestGeneric(Of T, U)
    Public Sub TellType(ByVal Something As T, ByVal SomethingElse As U)
        Console.WriteLine(Me.GetType())
    End Sub
End Class

Sub Main()
    Dim MyTestGeneric As New TestGeneric(Of String, Integer)
    MyTestGeneric.TellType("Test", 3)
    Console.ReadKey(True)
End Sub
Run Code Online (Sandbox Code Playgroud)

输出:

SO8593626.Program+TestGeneric`2[System.String,System.Int32]
Run Code Online (Sandbox Code Playgroud)

两种类型:字符串、整数

由于结构的原因,它能够以树状方式表示嵌套的泛型类型......

    Dim MyTestGeneric As New TestGeneric(Of String, Integer)
    Dim MyOtherGeneric As New TestGeneric(Of TestGeneric(Of String, Integer), Integer)
    MyOtherGeneric.TellType(MyTestGeneric, 3)
Run Code Online (Sandbox Code Playgroud)

产出

    SO8593626.Program+TestGeneric`2[SO8593626.Program+TestGeneric`2[System.String,System.Int32],System.Int32]
Run Code Online (Sandbox Code Playgroud)

两种根类型,其中一种是通用的:[String, Int], Int


Dam*_*ver 5

这是 CLR 中泛型的字符串表示形式的一部分。

反引号 (`) 后面的数字表示该类型采用的泛型类型参数的数量。方括号中的类型指示这些泛型类型参数是如何绑定的。