如何从方法返回DataTable和Integer?

时间:2013-03-13 12:04:19

标签: c#

从方法返回两个变量的最简单方法是什么?我想要返回DataTableInteger

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

3 个答案:

答案 0 :(得分: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有什么不同?

答案 1 :(得分:1)

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

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

您还可以创建并返回包含DataTableint两者的自定义类型。

答案 2 :(得分:0)

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