首页 > 解决方案 > 使用范围获取字符串的一部分是否会在内存中创建一个新字符串?

问题描述

通过使用 C# 8 特性 Range,它是在内存中创建一个新字符串,还是提供一个“指针”指向已经存在的前一个字符串的内存部分?

标签: c#stringrange

解决方案


var x = "foo"[1..2];

编译为;

int num = 1;
int length = 2 - num;
"foo".Substring(num, length);

并将.Substring创建一个新的角色副本。

如果你不需要字符串,你可以使用"foo".AsSpan()[1..2];


推荐阅读