首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Tuple.Create()与新的元组

Tuple.Create()与新的元组
EN

Stack Overflow用户
提问于 2014-12-13 12:35:24
回答 2查看 46K关注 0票数 47

考虑以下表达式:

代码语言:javascript
复制
new Tuple<int,int>(1,2);

Tuple.Create(1,2);

这两种创建元组的方法有什么不同吗?从我的理解来看,它似乎比在C++中创建对象(堆和栈)更方便快捷。

EN

回答 2

Stack Overflow用户

发布于 2014-12-13 12:43:57

就我个人而言,我发现Tuple.Create()不那么冗长,也更容易阅读。

没有区别,在引擎盖下。Tuple.Create()重载方法只是一堆调用您发布的第一个版本的静态方法:

代码语言:javascript
复制
public static class Tuple
{
    public static Tuple<T1> Create<T1>(T1 item1) {
        return new Tuple<T1>(item1);
    }

    public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2) {
        return new Tuple<T1, T2>(item1, item2);
    }

    public static Tuple<T1, T2, T3> Create<T1, T2, T3>(T1 item1, T2 item2, T3 item3) {
        return new Tuple<T1, T2, T3>(item1, item2, item3);
    }

    ...

我认为一个好处是,因为您不必使用Tuple.Create指定类型,所以您可以存储匿名类型,否则您将无法确定该类型是什么。

代码语言:javascript
复制
public class Person
{
    public string Name { get; set; }
    public int Height { get; set; }
    public DateTime BirthDate { get; set; }
}

var people = new List<Person>
{
    new Person { Name = "Bob", Height = 72, BirthDate = new DateTime(1984,1,1) },
    new Person { Name = "Mary", Height = 64, BirthDate = new DateTime(1980,2,2) }
};

var oneAnonList = people.Select(x => new { x.Name, x.BirthDate });
var twoAnonList = people.Select(x => new { x.Height, x.Name });

var myTuple = Tuple.Create(oneAnonList, twoAnonList);

这将创建一个具有两个匿名类型的元组,第一个是new { string Name, DateTime BirthDate },第二个是new { int Height, string Name }

因为要将它传递给另一个方法,你仍然需要能够定义参数的“类型”。所以这真的归结于便利性。

票数 30
EN

Stack Overflow用户

发布于 2014-12-13 12:43:19

这是没有区别的。如果你看一下源代码,你会发现它在做同样的事情。

http://referencesource.microsoft.com/#mscorlib/system/tuple.cs,9124c4bea9ab0199

例如:

代码语言:javascript
复制
Tuple.create(1,2); 

将会调用

代码语言:javascript
复制
public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2) {
    return new Tuple<T1, T2>(item1, item2);
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27455581

复制
相关文章

相似问题

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