从方法返回两个变量的最简单方法是什么?我想要返回DataTable
和Integer
。
Private SomeType someMethod()
{
int x=0;
Datatable y;
//return x and y
}
答案 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;
}
您还可以创建并返回包含DataTable
和int
两者的自定义类型。
答案 2 :(得分:0)
你的函数应该返回一个公开两个属性的对象,其中一个是整数,另一个是DataTable。