使用 C# 中的数组从函数中返回多个值

使用 C# 中的带有结构体/类对象的函数返回多个值

在 C# 中使用 Tuples 类从函数返回多个值

在 C# 中使用 (T1,T2) 表示法从函数中返回多个值

本教程将介绍从 C# 函数中返回多个值的方法。

使用 C# 中的数组从函数中返回多个值

数组数据结构体在 C# 中存储相同数据类型的多个值。我们可以使用数组从一个函数返回多个值。以下代码示例向我们展示了如何使用数组从 C# 中的函数返回多个值。

using System;

namespace return_multipe_values {

class Program {

public static int[] compare(int a, int b) {

int[] arr = new int[2];

if (a > b) {

arr[0] = b;

arr[1] = a;

} else {

arr[0] = a;

arr[1] = b;

}

return arr;

}

static void Main(string[] args) {

int[] returnvalue = Program.compare(10, 12);

Console.WriteLine("Smaller Value = {0}", returnvalue[0]);

Console.WriteLine("Larger Value = {0}", returnvalue[1]);

}

}

}

输出:

Smaller Value = 10

Larger Value = 12

我们用 C# 中的数组返回类型从 compare() 函数中返回了 2 个整数值。如果必须返回相同数据类型的多个值,则此方法很有用。如果要返回不同数据类型的多个值,则不能使用数组,因为数组仅存储相同数据类型的值。

使用 C# 中的带有结构体/类对象的函数返回多个值

结构体和类用于对相关值进行分组。这些值不必具有相同的数据类型。因此,我们可以使用结构体或类对象从 C# 中的函数返回多个值。以下代码示例向我们展示了如何使用结构体对象从 C# 中的函数返回多个值。

using System;

namespace return_multipe_values {

struct Values {

public int x;

public int y;

}

class Program {

public static Values comparevalues(int a, int b) {

Values V = new Values();

if (a > b) {

V.x = b;

V.y = a;

} else {

V.x = a;

V.y = b;

}

return V;

}

static void Main(string[] args) {

Values returnedvalues = Program.comparevalues(10, 12);

Console.WriteLine("Smaller Value = {0}", returnedvalues.x);

Console.WriteLine("Larger Value = {0}", returnedvalues.y);

}

}

}

输出:

Smaller Value = 10

Larger Value = 12

我们首先定义一个结构体 Values,其中包含我们要从函数中返回的值。然后,我们从 comparevalues() 函数以 Values 结构体返回了多个值,作为 C# 中的返回类型。返回的值还必须存储到相同结构体的实例中。

通过使用类作为函数的返回类型,也可以实现此目标。以下代码向我们展示了如何使用类从 C# 中的函数返回多个值。

using System;

public class Sample {

int x;

int y;

public void setxy(int v, int u) {

x = v;

y = u;

}

public void getxy() {

Console.WriteLine("The smaller value = {0}", x);

Console.WriteLine("The greater value = {0}", y);

}

}

public class Program {

public static Sample compare(int a, int b) {

Sample s = new Sample();

if (a > b) {

s.setxy(b, a);

} else {

s.setxy(a, b);

}

return s;

}

public static void Main() {

Sample returnedobj = Program.compare(10, 12);

returnedobj.getxy();

}

}

输出:

The smaller value = 10

The greater value = 12

我们首先定义一个样本类,其中包含要从函数中返回的值。然后,我们从 compare() 函数返回多个值,并以 Sample 类作为 C# 中函数的返回类型。返回的值还必须存储到同一类的实例中。尽管这两种方法都非常适合从函数返回不同数据类型的多个值,但是编写整个类或结构体以仅从函数返回多个值非常繁琐且耗时。

在 C# 中使用 Tuples 类从函数返回多个值

元组是在 C# 中具有特定编号和特定值顺序的数据结构。元组可以具有不同数据类型的多个值。Tuple 类可用于定义自定义元组具有特定顺序的用户定义数据类型。以下代码示例向我们展示了如何使用 C# 中的 Tuple 类从函数返回多个值。

using System;

public class Program {

public static Tuple ReturnMultipleValues() {

var result = Tuple.Create("value1", "value2", 3);

return result;

}

public static void Main() {

var returnedvalues = ReturnMultipleValues();

Console.WriteLine(returnedvalues);

}

}

输出:

(value1, value2, 3)

通过用 Tuple 指定函数的返回类型,我们从 ReturnMultipleValues() 函数返回多个值。这意味着 ReturnMultipleValues() 函数将返回 3 个值,其中 string 数据类型的前两个值和 int 数据类型的最后一个值。此返回值可以保存到结构体相似的元组中,也可以保存为 var 类型的变量。

在 C# 中使用 (T1,T2) 表示法从函数中返回多个值

上面讨论了如何使用 Tuple 类简化从函数返回多个值的过程,可以通过声明元组的 (T1, T2) 标记进一步缩短。(T1, T2) 表示法也通过缩短代码来实现与 Tuple 类相同的功能。下面的编码示例向我们展示了如何使用 (T1, T2) 表示法从 C# 中的函数返回多个值。

using System;

public class Program {

public static (string, string, int) ReturnMultipleValues() {

return ("value1", "value2", 3);

;

}

public static void Main() {

(string val1, string val2, int val3) = ReturnMultipleValues();

Console.WriteLine("{0} {1} {2}", val1, val2, val3);

}

}

输出:

value1 value2 3

在上面的代码中,我们以 C# 中的 (T1,T2) 表示法从 ReturnMultipleValues() 函数返回了多个值。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe