You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何更优地替换字符串占位符为范围数字生成List<string>

解答

完全可以用LINQ一行代码实现完全相同的效果,写法比手动初始化集合再循环Add简洁很多。

一行LINQ实现代码

string input = "Hello_World_{0}";
List<string> lst = Enumerable.Range(1, 10).Select(v => string.Format(input, v)).ToList();

实现逻辑说明

  • 首先通过Enumerable.Range(1, 10)直接生成从1到10的连续整数序列,和原循环的遍历范围完全一致
  • 调用Select方法做投影:对序列里的每个整数,用string.Format把模板字符串里的{0}占位符替换成当前数字
  • 最后调用ToList()方法,把投影得到的字符串序列直接转为List<string>集合,最终生成的集合内容和原循环写法没有任何差异。

可选优化方案

如果是使用C# 8及以上版本、且对性能有较高要求(比如单次生成万级以上数量的字符串),可以用string.Create结合栈分配内存的方式减少字符串格式化的开销,写法如下:

string input = "Hello_World_{0}";
List<string> lst = Enumerable.Range(1, 10)
    .Select(v => string.Create(null, stackalloc char[64], $"Hello_World_{v}"))
    .ToList();

注意:普通业务场景下(生成元素数量在千级以内),这个优化带来的性能差异几乎感知不到,优先选择可读性更好的string.Format写法即可,没必要为了微幅性能牺牲代码可维护性。

内容的提问来源于stack exchange,提问作者usmanharoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:03:23