如何为数组内联样式中的每个项添加值
本文关键字:添加 样式 数组 | 更新日期: 2023-09-27 18:26:01
假设我有一个数组
string[] arr = new string[] {"1","2","3"};
我想在值的末尾添加一个字符串,类似这样:
arr.appendToEnd(" Test");
return arr; // returns {"1 Test","2 Test","3 Test"}
我想知道是否有内置的东西可以做到这一点,而不必构建自己的扩展方法。
没有任何内置功能。您可以使用LINQ轻松创建新阵列:
arr = arr.Select(x => x + " Test").ToArray();
但这不会修改原始数组。如果其他任何对象引用了原始数组,则它们不会看到更改。通常情况下,这实际上是一件好事IMO,但偶尔您可能需要修改现有的集合。
为此,您可以编写自己的通用方法来修改现有阵列(或任何其他IList<T>
实现):
public static void ModifyAll<T>(this IList<T> source, Func<T, T> modification)
{
// TODO: Argument validation
for (int i = 0; i < source.Count; i++)
{
source[i] = modification(source[i]);
}
}
然后你可以使用:
arr.ModifyAll(x => x + " Test");
我肯定会使用这个方法,而不是编写一个字符串串联特定的扩展方法。
如果您所说的"内置"是指函数appendToEnd
存在,则不存在。
然而,这很容易做到:
arr = arr.Select(s => s + " Test").ToArray();