字符串实习池

时间:2016-07-12 10:32:03

标签: .net vb.net

MSDN建议“公共语言运行时通过维护一个名为intern pool的表来保存字符串存储,该表包含对在程序中以编程方式声明或创建的每个唯一文字字符串的单个引用。因此,具有特定值的文字字符串实例仅在系统中存在一次。“

为什么在下面的示例中,此String.IsInterned调用不会返回对常量的引用?

如果我取消注释第一个Console.WriteLine方法调用,则返回引用。另外,如果我没有将测试变量声明为常量,则返回引用。为什么常数不被实习?

Module InternTest
    Private Const test As String = "wwwww"
    'Private test As String = "wwwww"

    Sub Main()
        'Console.WriteLine(test)
        Console.WriteLine("interned = " & String.IsInterned(createString()))
        Console.ReadLine()
    End Sub

    Function createString() As String
        Dim sb As New Text.StringBuilder
        sb.Append("w")
        sb.Append("w")
        sb.Append("w")
        sb.Append("w")
        sb.Append("w")
        Return sb.ToString
    End Function
End Module

0 个答案:

没有答案