使用C#方法返回不同数据类型的多个值?

时间:2010-05-12 06:58:51

标签: c#

我有一个带两个参数的函数:

 string[], double[]

如何返回这两个值?怎么称呼这个功能?

7 个答案:

答案 0 :(得分:11)

创建一个对象,其中包含要返回的值的属性:

public class MyReturnType
{
    public string[] MyStringArray { get; set; }
    public double[] MyDoubleArray { get; set; }
}

然后您的方法将返回此新类型:

public MyReturnType Foo()
{
    ...
    return new MyReturnType { MyStringArray = strings; MyDoubleArray = doubles; };
}

答案 1 :(得分:11)

嘿,您可以使用关键字“out”:

column s1;
column s2;

public void method1(out value1, out value2)
{
select col1, col2, from tb1
value1 = col1;
value2 = col2;
}

答案 2 :(得分:7)

  • 使用Tuple结构(.NET 4.0中的新结构,但您可以根据它在自己的dll中创建一个 - 它是多个泛型类型的简单容器)。

  • 使用专门的运营商结构,如Michael Shimmins的回答说,但要把它作为一个结构,而不是一个类,除非它很大。

  • 使用dicitonary或对象数组,如果这是纯粹的内部函数(案例问题)。

  • 使用参数。

答案 3 :(得分:2)

您可以使用out或ref参数。

请参阅herehere

答案 4 :(得分:0)

你不能直接返回它,但你可以使用struct返回它。你可以为string和double创建struct并将值存储在其中,之后你可以返回它。

答案 5 :(得分:0)

你也可以使用ref operator

答案 6 :(得分:-3)

您可以返回Hashtable个对象。或者List ...或任何你想要的对象集合。

LE

Hashtable process(string[] x, double[] y)
{
   Hashtable output = new Hashtable();

   // do whatever you want with x and y

   output["stringArray"] = x;
   output["doubleArray"] = y;
   return output;
}

// ...

string[] stringArray = new string[] {};
double[] doubleArray = new double[] {};

// ...

Hashtable outcome = process(stringArray, doubleArray);
string[] data1 = (string[])outcome["stringArray"];
double[] data2 = (double[])outcome["doubleArray"];

// ...