如何为数组内联样式中的每个项添加值

时间:2014-10-08 17:54:45

标签: c#

假设我有一个数组

string[] arr = new string[] {"1","2","3"};

我想在值的末尾添加一个字符串,如下所示:

arr.appendToEnd(" Test");

return arr; // returns {"1 Test","2 Test","3 Test"}

我想知道是否有内置功能可以做到这一点,而不是必须构建我自己的扩展方法。

2 个答案:

答案 0 :(得分:4)

没有任何内置功能。您可以使用LINQ轻松创建 new 数组:

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");

我肯定会使用它而不是编写特定于字符串连接的扩展方法。

答案 1 :(得分:0)

如果通过&#34;内置&#34;你的意思是函数appendToEnd存在,然后是。

然而,它很容易做到:

arr = arr.Select(s => s + " Test").ToArray();