首页 > 解决方案 > 获取特定类型的输入数组

问题描述

我需要获取特定类型的数组输入 - 下面的 int 示例。

string[] input = Console.ReadLine().Split(' ');
int[] array = new array[input.Length];

for(int i = 0; i < input.Length; i++)
{
   array[i] = int.Parse(input[i]);
}

这是可行的,但是如果有多个不同类型的此类数组,则需要太多代码才能在字符串数组中获取输入,然后将其解析为每个输入数组所需的类型。有什么捷径可以完成这项工作吗?保证完整的数组输入将位于单行上。

标签: c#arrays

解决方案


看看Enumerable.Select

int[] array = input.Select(int.Parse).ToArray();

您可以轻松地将其更改为另一种类型,例如:

class StringContainer
{
    public string Value { get; set; }
}

StringContainer[] array = input.Select(x => new StringContainer { Value = x }).ToArray();

你甚至可以定义一个扩展方法

public static TOut[] Convert<TIn, TOut>(this TIn[] input, Func<TIn, TOut> selector)
{
    return input.Select(selector).ToArray();
}

然后像这样使用:

int[] intArray = input.Convert(int.Parse);
StringContainer[] scArray = input.Convert(x => new StringContainer { Value = x });

输出数组的类型是从委托的返回类型推断出来的。


推荐阅读