如何从方法返回DataTable和Integer?

use*_*636 -1 c#

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

Private SomeType someMethod()
{
   int x=0;
   Datatable y;
   //return x and y
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 6

最终,"最佳"是主观的,取决于您的情况.我们可以提供选项,但"最佳"是您的本地选择.

有多种方法可以返回多个值; out是非常有效的,但不是很灵活,很多人发现它很混乱(事实上,有些人会说这是一种反模式).但是例如:

DataTable Foo(out int val) {
   ...
   val = something
   return dataTable;
}
Run Code Online (Sandbox Code Playgroud)

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

FooResult Foo() {
   ...
   return new FooResult { Table = dataTable, Value = val };
}
Run Code Online (Sandbox Code Playgroud)

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

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