首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建ValueTuple列表?

如何创建ValueTuple列表?
EN

Stack Overflow用户
提问于 2017-05-29 21:25:01
回答 4查看 43.3K关注 0票数 41

是否可以在ValueTuple 7中创建C#列表?

就像这样:

代码语言:javascript
复制
List<(int example, string descrpt)> Method()
{
    return Something;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-29 21:36:34

您正在寻找这样的语法:

代码语言:javascript
复制
List<(int, string)> list = new List<(int, string)>();
list.Add((3, "first"));
list.Add((6, "second"));

在你的情况下,你可以这样使用:

代码语言:javascript
复制
List<(int, string)> Method() => 
    new List<(int, string)>
    {
        (3, "first"),
        (6, "second")
    };

还可以在返回之前命名这些值:

代码语言:javascript
复制
List<(int Foo, string Bar)> Method() =>
    ...

您可以在(重新)命名它们时接收这些值:

代码语言:javascript
复制
List<(int MyInteger, string MyString)> result = Method();
var firstTuple = result.First();
int i = firstTuple.MyInteger;
string s = firstTuple.MyString;
票数 107
EN

Stack Overflow用户

发布于 2017-05-29 21:32:47

当然,你可以这样做:

代码语言:javascript
复制
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);
票数 12
EN

Stack Overflow用户

发布于 2019-06-18 19:07:07

只是为了添加现有的答案,关于从现有可枚举项中投影ValueTuples和属性命名:

您仍然可以命名元组属性,还可以使用var类型推断(即不重复属性名称),方法是为元组创建中的属性提供名称,即

代码语言:javascript
复制
var list = Enumerable.Range(0, 10)
    .Select(i => (example: i, descrpt: $"{i}"))
    .ToList();

// Access each item.example and item.descrpt

类似地,当从方法返回元组的枚举时,可以在方法签名中命名属性,然后不需要在方法中再次命名它们:

代码语言:javascript
复制
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.descrpt
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44250462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档