C# - 泛型 - 字符串数组处理

use*_*977 0 c#

我们有两组字符串数组,例如:

string[] a = new string[] {"value1","value2","value3"};
string[] b = new string[] {"value1","value2","value3"}; 
Run Code Online (Sandbox Code Playgroud)

我必须开发一个泛型方法,它应该将这两个字符串数组作为参数,并应返回组合后的:

public T[] ArrayItms(T1[] a, T2[] b)
{
    return T[];
}
Run Code Online (Sandbox Code Playgroud)

我有点困惑,在泛型中这样做.

Kon*_*lph 7

你可以使用LINQ来做到这一点:

public T[] ArrayItms<T>(T[] a, T[] b)
{
    return a.Concat(b).ToArray();
}
Run Code Online (Sandbox Code Playgroud)

或者,通过复制数组手动执行:

public T[] ArrayItms<T>(T[] a, T[] b)
{
    T[] result = new T[a.Length + b.Length];
    Array.Copy(a, result, a.Length);
    Array.Copy(b, 0, result, a.Length, b.Length);
    return result;
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,请注意未初始化的参数(未在上面的示例代码中完成).


Joe*_*orn 6

阵列是如此2004年.

public IEnumerable<string> ArrayItms(IEnumerable<string> a, IEnumerable<string> b)
{
    return a.Concat(b);
}
Run Code Online (Sandbox Code Playgroud)

您可以直接将数组传递给此函数,因为数组实现了IEnumerable.如果您确实需要数组结果,请.ToArray()在调用该函数后调用.或者因为它只是一个单行程序完全跳过该函数而只是调用.Concat()第一个数组.

请注意,这很容易转换为适用于任何类型的通用函数.但到目前为止,你只是说你关心字符串.