什么以及何时使用元组?

时间:2012-11-30 06:47:32

标签: c# .net c#-4.0 .net-4.0 tuples

有人可以解释一下Tuple是什么以及如何在真实世界场景中使用它。我想知道这如何丰富我的编码经验?

5 个答案:

答案 0 :(得分:121)

这个msdn article很好地解释了它的例子,“元组是一个具有特定数量和元素序列的数据结构”。

  

元组通常以四种方式使用:

     
      
  1. 表示一组数据。例如,一个元组可以   表示数据库记录,其组件可以表示   记录的各个字段。

  2.   
  3. 提供对数据集的轻松访问和操作。

  4.   
  5. 从方法返回多个值而不使用out参数   (在C#中)或ByRef参数(在Visual Basic中)。

  6.   
  7. 通过单个参数将多个值传递给方法。对于   例如,Thread.Start(Object)方法只有一个参数   允许您为线程执行的方法提供一个值   启动时间。如果您提供Tuple<T1, T2, T3>对象作为方法   参数,你可以提供三个线程的启动例程   数据项。

  8.   

答案 1 :(得分:75)

元组允许您将可能不同类型的多个值组合到单个对象中,而无需创建自定义类。如果您想编写一个方法,例如返回三个相关值但您不想创建新类,这将非常有用。

通常你应该创建一个类,因为这允许你为每个属性提供有用的名称。广泛使用元组的代码很快就会变得不可读,因为属性称为Item1Item2Item3等。

答案 2 :(得分:37)

元组和类之间的区别在于元组没有属性名称。这几乎从来都不是一件好事,我只会在参数像抽象数学公式Eg中那样毫无意义时使用元组。超过5,6,7维度的抽象微积分可能需要一个坐标元组。

答案 3 :(得分:24)

这是了解Tuple类型最重要的事情。元组是一个类,而不是结构。因此,它将在托管堆上分配。分配的每个类实例都会增加垃圾收集的负担。

注意: 属性Item1,Item2,并且还没有setter。你不能分配它们。一旦在内存中创建,元组就是不可变的。

答案 4 :(得分:19)

元组课程允许开发人员快速而懒惰。通过不为特定用途定义特定类。

属性名称为Item1,Item2,Item3 ...,在某些情况下或没有文档时可能没有意义。

元组类具有强类型泛型参数。仍然可以从通用参数的类型推断出Tuple类的用户。