2010-05-12 69 views
2

我有这需要两个参数的函数:让C#方法返回多个不同数据类型的值?

string[], double[] 

如何返回这两个值?如何调用该功能?

+0

有可能在单声道C#,不知道这是否会逐步应用到未来的微软的C# – Hao 2010-05-12 07:06:53

+1

浩:请给一个指针或显示一个例子。 – Gabe 2010-05-12 08:08:56

+0

好的,事实证明,有一个概念验证,可以对元组进行拆包分配:http://tirania.org/blog/archive/2009/Dec-23.html – Gabe 2010-05-12 09:52:54

回答

11

嘿,你可以使用关键字 “走出去”:

column s1; 
column s2; 

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

这是其中之一理由出来了。 – Dykam 2010-05-15 09:59:21

-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"]; 

// ... 
+0

您可以使用例子来说明问题吗? ?????? – Subbu 2010-05-12 08:03:43

+0

返回不同类型时只有哈希表有用(由于没有类型安全) – RvdK 2010-05-12 08:52:23

+0

如何在不同位置调用该函数? – Subbu 2010-05-12 09:57:18

10

创建的值属性的对象要返回:

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

你的方法,然后将返回这个新类型:

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

恕我直言只应使用当返回值是相关的(很大的可能性,他们是因为他们来自相同的功能) – RvdK 2010-05-12 13:34:59

0

你不能直接返回,但可以使用strct返回。你可以为字符串创建结构体并且将其存储在其中,然后你可以返回它。

+0

你会请示例清楚说明??????/ – Subbu 2010-05-12 07:35:30

2

可以使用out或ref参数。

herehere

+0

+1击败我吧! – Blindy 2010-05-12 07:06:12

7
  • 使用元组结构(新的.NET 4.0,但是你可以根据它只是让一个在你自己的DLL - 它是多个泛型类型的简单容器)。

  • 使用像迈克尔Shimmins答案说的专门的载体结构,但使它成为一个结构,而不是一个类,除非它很大。

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

  • 使用输出参数。

+0

请问你能用例子说明一下吗? – Subbu 2010-05-12 08:04:33

+2

不好,很抱歉 - 一本关于C#或文档基础知识的书有所有例子。 – TomTom 2010-05-12 08:12:42

相关问题