String s1 = "Hello";
String s2 = "Hello";
Run Code Online (Sandbox Code Playgroud)
这里s1,s2不同但是为什么ReferenceEquals()返回true
Mar*_*ell 26
这是由于实习 - CLI自动重新使用作为文字获得的字符串(即直接来自源代码的字符串).请注意,如果您这样做:
char[] chars = {'h','e','l','l','o'};
string s1 = new string(chars);
string s2 = new string(chars);
Run Code Online (Sandbox Code Playgroud)
它们不是同一个字符串实例,因为它们不是来自文字.
这是针对LdstrIL指令记录的:
公共语言基础结构(CLI)保证引用具有相同字符序列的两个元数据标记的两个ldstr指令的结果精确地返回相同的字符串对象(称为"字符串实习"的过程).
| 归档时间: |
|
| 查看次数: |
2429 次 |
| 最近记录: |