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

如何为C#中string[]数组的所有元素统一赋值(非循环方法)

替代循环给数组所有元素赋值的方法

当然有啦!除了手动写循环,C#里还有几种更简洁的方式能完成这个需求,我给你整理几个常用的方案:

1. 使用 Array.Fill(推荐,C# 8.0+/.NET Core 3.0+ 可用)

这是最直接的官方方法,一行代码就能搞定,内部其实封装了循环逻辑,但不用你自己写:

Array.Fill(MyStr, "Something");

这个方法会直接修改原数组的每一个元素,完美契合你的需求——不用创建新数组,直接更新现有数组的所有值。

2. 使用 LINQ 的 Enumerable.Repeat 创建新数组

如果你不需要保留原数组的引用(比如原数组没有被其他地方绑定),可以用LINQ快速生成一个全是目标字符串的新数组,然后替换掉原来的变量:

MyStr = Enumerable.Repeat("Something", 100).ToArray();

⚠️ 注意:这个方法会创建一个全新的数组对象,原来的数组会被垃圾回收。如果你的MyStr还被其他代码引用,这种方式会导致那些引用指向旧数组,而不是更新后的新数组,这点要留意。

3. 使用 Array.ForEach(带 ref 参数,C# 7.2+ 可用)

虽然本质还是循环,但写法更简洁,而且能直接修改原数组元素:

Array.ForEach(MyStr, (ref string s) => s = "Something");

这里的ref关键字很关键,因为字符串是引用类型,但默认的Array.ForEach是值传递(传递的是引用的副本),不加ref的话无法修改原数组的元素引用,所以必须加上ref才能生效。

补充说明

如果你的项目基于老版本的.NET框架(比如.NET Framework 4.x),Array.Fill可能无法使用,这时候LINQ或者带ref的Array.ForEach就是更好的选择。另外,因为string是不可变的引用类型,这些方法都是直接替换数组中每个元素的引用,不会有意外的副作用。

内容的提问来源于stack exchange,提问作者Fakd 'Ap

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:53:51