从文件创建元组数组
本文关键字:数组 元组 文件创建 | 更新日期: 2023-09-27 18:04:29
我有一个充满文本和数字的文件,需要将其导入Tuple<string, int>
数组(Tuple<string, int>[] vowels = new Tuple<string, int>[81]
)。文件看起来像这样
a,2,e,6,i,3,o,8,u,2,y,5
我当前使用的方法最初使用
将其导入到字符串数组中 string[] vowelsin = File.ReadAllText("path.txt").Split(',');
导入后,我使用
将数据转换为元组 for (int x = 0; x < 81; x++)
vowels[x] = Tuple.Create(vowelin[x*2], int.Parse(vowelin[(x*2) + 1]));
虽然它可以工作,但它有点难以阅读,并且在测试期间需要大约100ms才能完成。是否有任何潜在的单行程序、更快的方法或更可读的方法可以完成相同的事情?
string[] vowelsin = File.ReadAllText("path.txt").Split(',');
vowles = vowelsin.Zip(vowelsin.Skip(1),
(a, b) => new Tuple<string, string>(a, b))
.Where((x, i) => i % 2 == 0)
.ToArray();
您可以使用KeyValuePair或Dictionary来代替元组。
根据这篇文章,元组比KeyValuePair更快。你可以在这里找到更多观点。
另一方面,这里对字典和元组进行了比较。
好消息来了:
在c# 7.0中引入了一个关于元组的新特性:
(string, string, string) LookupName(long id) // tuple return type
{
... // retrieve first, middle and last from data storage
return (first, middle, last); // tuple literal
}
这是使用元组的新方法:(type,…,类型),这意味着该方法将返回多个值(在本例中为三个)。
该方法现在有效地返回三个字符串,作为元组值中的元素包装。
方法的调用者现在将接收一个元组,并且可以单独访问元素:
var names = LookupName(id);
WriteLine($"found {names.Item1} {names.Item3}.");
在这里你会发现这些新元组相对于System.Tuple<>