使用C#中的元组返回多个值

时间:2020-02-23 14:29:52  来源:igfitidea点击:

在CPRIOD到C7.0的版本中,每个返回值都是一个对象。
它可能是一个非常复杂的对象,但它仍然是一个对象。
在C7.0中,我们实际上可以使用元组返回多个值。
元组是一个名义上包含两个可以将其解释为键和值对(但不严格要求的项目)的动态阵列。
在C#中,我们还可以创建包含多个项目的元组。
许多语言(如Python)使用元组来简化编码,并使与值相当容易地交互。

C4.x实际上引入了元组的概念,作为动态编程技术的一部分。
但是,C7.0推进使用元组允许返回多个值而不是一个对象。
本书并不提供大量的元组覆盖,但它们在返回复杂数据时工作非常好,我们肯定需要了解有关此元组的某些内容。

使用单个条目元组

元组依赖于 Tuple数据类型,可以接受一个或者两个输入,两个是最常见的(否则,我们可以简单地返回一个对象)。
使用元组的最佳方法是提供我们计划作为声明的一部分提供的变量的数据类型。
以下是返回元组的方法的示例:

static Tuple<string, int> getTuple()
{
//Return a single value using the tuple.
return new Tuple<string, int>("Hello", 123);
}

代码开始指定该代码 getTuple()返回A. Tuple由两个项目组成,a stringint
你用了 new关键字创建一个实例 Tuple,指定角度括号中的数据类型, <string, int>,然后提供数据值。
getTuple()方法有效地返回两个可以单独操纵的两个值,如下所示:

//This is where your program starts.
static void Main(string[] args)
{
//Obtain a single entry tuple.
Console.WriteLine(
getTuple().Item1 + " " + getTuple().Item2);
//Wait for user to acknowledge the results.
Console.WriteLine("Press Enter to terminate...");
Console.Read();
}

要访问像这样的单个条目元组,则可以调用 getTuple(),添加一个句点,然后指定要使用的项目, Item1或者 Item2
这个例子只是演示了元组如何工作,所以它很简单。
输出看起来如此:

Hello 123
Press Enter to terminate...

使用元组允许我们返回两个值,而无需诉诸复杂的数据类型或者其他奇数结构。
它使代码更简单,当输出要求适合元组的范围内。
例如,在执行某些数学操作时,我们需要返回一个结果和余数或者复杂数字的虚构部分。

依赖于create()方法

创建元组的另一种方法是依赖于 Create()方法。
结果与使用上述方法时的结果相同。
这是一个使用的例子 Create()方法:

//Use the Create() method.
var myTuple = Tuple.Create<string, int>("Hello", 123);
Console.WriteLine(myTuple.Item1 + "\t" + myTuple.Item2);

这种方法并不像上面的方法一样安全,因为 myTuple最终可能在里面有任何东西。
你可以进一步消除 <string, int>构造函数的部分强制编译器确定什么 myTuple应该作为输入接收。

使用多条目元组

元组的真实值正在使用极其简单的编码方法创建数据集。
这是我们可以选择查看的地方 Item1作为一个关键和 Item2作为一个值。
今天许多数据集类型依赖于密钥和值范例并以这种方式查看元组确实使其变得非常有用。
以下示例显示了元组数据集的创建和返回。

static Tuple<string, int>[] getTuple()
{
//Create a new tuple.
Tuple<string, int>[] aTuple =
{
new Tuple<string, int>("One", 1),
new Tuple<string, int>("Two", 2),
new Tuple<string, int>("Three", 3)
};
//Return a list of values using the tuple.
return aTuple;
}

我们指定了返回类型 Tuple数据类型。
但是,这个例子添加了一对方括号( [])类似于用于数组的那些。
方括号告诉CTHAT这个版本 getTuple()返回多个元组,而不仅仅是一个元组。

要创建元组数据集,请按照显示的变量声明开始 aTuple
每个新的进入元组都需要一个 new Tuple如图所示的必需输入声明。
整个东西被放置在卷曲括号内,并用分号结束。
要返回元组,只需使用 return声明正常。

访问元组需要使用枚举器,我们可以执行任何我们通常与枚举器执行的任何操作,例如使用单个值交互 foreach
以下代码显示了如何仅用于实验目的的执行此任务:

static void Main(string[] args)
{
//Obtain a multiple entry tuple.
Tuple<string, int>[] myTuple = getTuple();
//Output the values.
foreach (var Item in myTuple)
{
Console.WriteLine(Item.Item1 + "\t" + Item.Item2);
}
//Wait for user to acknowledge the results.
Console.WriteLine("Press Enter to terminate...");
Console.Read();
}

foreach声明从 myTuple进入 Item
然后使用使用的单独访问数据元素 Item1Item2像之前一样。
以下是此示例的

One     1
Two     2
Three   3
Press Enter to terminate...

使用两个以上的项目创建元组

元组可以有一到八个项目。
如果我们想要超过八个项目,第八项必须包含另一个元组。
嵌套元组使我们可以返回几乎无限数量的项目,但在某些时候,我们确实需要查看代码的复杂性,并查看我们是否可以保持返回项目的数量。
否则,我们发现应用程序慢慢执行并使用大量资源。
以下是一个使用三项的示例:

static Tuple<string, int, bool>[] getTuple()
{
//Create a new tuple.
Tuple<string, int, bool>[] aTuple =
{
new Tuple<string, int, bool>("One", 1, true),
new Tuple<string, int, bool>("Two", 2, false),
new Tuple<string, int, bool>("Three", 3, true)
};
//Return a list of values using the tuple.
return aTuple;
}

该技术遵循与以前相同的模式。
唯一的区别在于我们为每个元组提供更多值。
无论我们还创建用作数据集的组元组或者元组数组也无关紧要。
任何一种选择都允许我们每元组使用多达八个项目。