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