c# - 使用范围获取字符串的一部分是否会在内存中创建一个新字符串?
问题描述
通过使用 C# 8 特性 Range,它是在内存中创建一个新字符串,还是提供一个“指针”指向已经存在的前一个字符串的内存部分?
解决方案
var x = "foo"[1..2];
编译为;
int num = 1;
int length = 2 - num;
"foo".Substring(num, length);
并将.Substring
创建一个新的角色副本。
如果你不需要字符串,你可以使用"foo".AsSpan()[1..2];
推荐阅读
- scala - 有限范围的Scala LazyList
- postgresql - 在 Postgres 11.5 中分析术语列表及其最近邻
- sphinx - 使用非 ASCII 字符进行 Sphinx 搜索
- android - 找不到生命周期服务
- r - 如何使用 ggplot2 在一个图中绘制多个字符变量?
- docker - Fluentd elasticsearch 插件未从 Raspberry Pi 上的 Kubernetes 连接到 Elasticsearch
- react-native - 你如何跟踪 React Native 中“功能组件”的渲染计数?
- excel - 尝试 Web 抓取时出现 VBA 运行时 91 错误
- xml - 如何使用 Unmarshal 解析 XML
- c# - 使用子句搜索错误包括:实体框架