-1

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

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

3 回答 3

6

最终,“最佳”是主观的,取决于您的情况。我们可以提供选项,但“最佳”对您来说是本地的。

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

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

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

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

whereFooResult是具有 2 个属性的类。这样做的好处是您可以轻松添加更多属性,而无需更改 API。

同样,您可以返回 a Tuple<DataTable,int>- 但我建议不要这样做,因为它没有表达每个值所代表的含义。在一个Tuple<string,int,string>,什么是Item1?有什么不同Item3

于 2013-03-13T12:08:00.993 回答
1

忽略问题中“最有效”的部分,因为它毫无意义。您可以使用一个out参数和一个返回值

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

您还可以创建并返回一个自定义类型,其中包括 theDataTableint.

于 2013-03-13T12:09:42.173 回答
0

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

于 2013-03-13T12:10:20.120 回答