是否可以在ValueTuple 7中创建C#列表?
就像这样:
List<(int example, string descrpt)> Method()
{
return Something;
}发布于 2017-05-29 21:36:34
您正在寻找这样的语法:
List<(int, string)> list = new List<(int, string)>();
list.Add((3, "first"));
list.Add((6, "second"));在你的情况下,你可以这样使用:
List<(int, string)> Method() =>
new List<(int, string)>
{
(3, "first"),
(6, "second")
};还可以在返回之前命名这些值:
List<(int Foo, string Bar)> Method() =>
...您可以在(重新)命名它们时接收这些值:
List<(int MyInteger, string MyString)> result = Method();
var firstTuple = result.First();
int i = firstTuple.MyInteger;
string s = firstTuple.MyString;发布于 2017-05-29 21:32:47
当然,你可以这样做:
List<(int example, string descrpt)> Method() => new List<(int, string)> { (2, "x") };
var data = Method();
Console.WriteLine(data.First().example);
Console.WriteLine(data.First().descrpt);发布于 2019-06-18 19:07:07
只是为了添加现有的答案,关于从现有可枚举项中投影ValueTuples和属性命名:
您仍然可以命名元组属性,还可以使用var类型推断(即不重复属性名称),方法是为元组创建中的属性提供名称,即
var list = Enumerable.Range(0, 10)
.Select(i => (example: i, descrpt: $"{i}"))
.ToList();
// Access each item.example and item.descrpt类似地,当从方法返回元组的枚举时,可以在方法签名中命名属性,然后不需要在方法中再次命名它们:
public IList<(int example, string descrpt)> ReturnTuples()
{
return Enumerable.Range(0, 10)
.Select(i => (i, $"{i}"))
.ToList();
}
var list = ReturnTuples();
// Again, access each item.example and item.descrpthttps://stackoverflow.com/questions/44250462
复制相似问题