有人可以解释一下Tuple是什么以及如何在真实世界场景中使用它。我想知道这如何丰富我的编码经验?
答案 0 :(得分:121)
这个msdn article很好地解释了它的例子,“元组是一个具有特定数量和元素序列的数据结构”。
元组通常以四种方式使用:
表示一组数据。例如,一个元组可以 表示数据库记录,其组件可以表示 记录的各个字段。
提供对数据集的轻松访问和操作。
从方法返回多个值而不使用out参数 (在C#中)或
ByRef
参数(在Visual Basic中)。- 醇>
通过单个参数将多个值传递给方法。对于 例如,
Thread.Start(Object)
方法只有一个参数 允许您为线程执行的方法提供一个值 启动时间。如果您提供Tuple<T1, T2, T3>
对象作为方法 参数,你可以提供三个线程的启动例程 数据项。
答案 1 :(得分:75)
元组允许您将可能不同类型的多个值组合到单个对象中,而无需创建自定义类。如果您想编写一个方法,例如返回三个相关值但您不想创建新类,这将非常有用。
通常你应该创建一个类,因为这允许你为每个属性提供有用的名称。广泛使用元组的代码很快就会变得不可读,因为属性称为Item1
,Item2
,Item3
等。
答案 2 :(得分:37)
元组和类之间的区别在于元组没有属性名称。这几乎从来都不是一件好事,我只会在参数像抽象数学公式Eg中那样毫无意义时使用元组。超过5,6,7维度的抽象微积分可能需要一个坐标元组。
答案 3 :(得分:24)
这是了解Tuple类型最重要的事情。元组是一个类,而不是结构。因此,它将在托管堆上分配。分配的每个类实例都会增加垃圾收集的负担。
注意: 属性Item1,Item2,并且还没有setter。你不能分配它们。一旦在内存中创建,元组就是不可变的。
答案 4 :(得分:19)
元组课程允许开发人员快速而懒惰。通过不为特定用途定义特定类。
属性名称为Item1,Item2,Item3 ...,在某些情况下或没有文档时可能没有意义。
元组类具有强类型泛型参数。仍然可以从通用参数的类型推断出Tuple类的用户。