2013-03-13 79 views
-2

返回方法中两个变量的最简单方法是什么?我想返回DataTableInteger如何从一个方法返回一个DataTable和一个Integer?

Private SomeType someMethod() 
{ 
    int x=0; 
    Datatable y; 
    //return x and y 
} 
+6

“最高效”在返回“DataTable”时可能已经是一个争论点... – 2013-03-13 12:04:53

+0

在一个函数中? – Novice 2013-03-13 12:06:00

+0

在两个单独的功能?或作为自定义对象? – Tim 2013-03-13 12:06:27

回答

5

最终,“最好”是主观的,取决于你的情况。我们可以提供选项,但“最好”是你本地的。

返回多个值有多种方式; out是非常有效的,但不是很灵活,许多人觉得它很混乱(实际上,有人会说这是一种反模式)。但是,例如:

DataTable Foo(out int val) { 
    ... 
    val = something 
    return dataTable; 
} 

也许更方便是声明的返回类型封装两个值:

FooResult Foo() { 
    ... 
    return new FooResult { Table = dataTable, Value = val }; 
} 

其中FooResult是具有2个属性的类。这具有的优点是您可以轻松地添加更多属性,而无需更改API。

同样,你可以返回一个Tuple<DataTable,int> - 但我建议反对它,因为它对每个值表示什么都不表示。在Tuple<string,int,string>中,什么是Item1?与Item3有什么不同?

+0

出来了,谢谢 – user1590636 2013-03-13 12:12:09

1

忽略问题中“最有效”的部分,因为它毫无意义。您可以使用一个out-paremeterreturn value

public DataTable GetData(out int integerVariable) 
{ 
    // ... 
    integerVariable = 4711; 
    return table; 
} 

您还可以创建并返回一个自定义类型,其中包括双方的DataTableint

0

你的函数应该返回一个暴露两个属性的对象,其中一个是整数,另一个是DataTable。

+0

你可以创建一个具有所需功能的类。然后你创建这个类的一个实例,调用函数(它甚至可以在构造函数中),函数将结果保存到属性中并返回。 – Sinatr 2013-03-13 12:32:30

相关问题