c# - 获取特定类型的输入数组
问题描述
我需要获取特定类型的数组输入 - 下面的 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]);
}
这是可行的,但是如果有多个不同类型的此类数组,则需要太多代码才能在字符串数组中获取输入,然后将其解析为每个输入数组所需的类型。有什么捷径可以完成这项工作吗?保证完整的数组输入将位于单行上。
解决方案
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 });
输出数组的类型是从委托的返回类型推断出来的。
推荐阅读
- logging - 在应用程序脚本 Console.error 函数中添加行号
- go - 如何使用golang创建嵌套json数组对象
- junit - Mockito 是否支持 @Any @Inject Instance<> 接口?
- c# - 微服务通信消息模板方法
- events - 事件驱动架构中的主题粒度
- php - header() 停止页面刷新表单提交的替代方法
- java - 解析日期时出现 java.time.format.DateTimeParseException
- java - 用 for 循环绘制图形(数字)
- sql - 在 Oracle SQL 中识别字符串并将前缀附加到字符串
- java - 如何解决 Java 中没有子包可见性的问题