Dim Str1 As String = “Tmp”
Dim Str2 As String = “Tmp”
Dim Str3 As String = New String(CType(“Tmp”, Char()))
Console.WriteLine(Str1 = Str2) ’ => True 两个对象的内容相同
Console.WriteLine(Str1 Is Str2) ’ => True 两个引用指向同一个对象
这段代码里,虽然Str1和Str2 2个字符串内容都是"Tmp",但是字符串是指针,他们2个指针数不一定就是1个指针把???
哪为什么Str1 Is Str2 就是True么????
.NET 的字符串保存在一个公共缓冲区. 相同的字符串,无论出现在哪,它们都是指向的都是同一个东西:同一个缓冲区的值.
并不是这样,只有编译器能够识别的常量才放在字符串常量池里。
看如下代码:
Visual Basic code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
Imports System
Public Class Test
Public Shared Sub Main()
Dim str1 As String = Mid(“hello”, 1, 2)
Console.WriteLine(str1)
Dim str2 As String = “he”
Console.WriteLine(object.ReferenceEquals(str1, str2))
Console.WriteLi