メソッドから2つの変数を返す最も簡単な方法は何ですか?DataTable
とを返したいInteger
。
Private SomeType someMethod()
{
int x=0;
Datatable y;
//return x and y
}
メソッドから2つの変数を返す最も簡単な方法は何ですか?DataTable
とを返したいInteger
。
Private SomeType someMethod()
{
int x=0;
Datatable y;
//return x and y
}
最終的に、「最良」は主観的であり、シナリオによって異なります。オプションを提示することはできますが、「最良」はあなたにとってローカルです。
複数の値を返すにはさまざまな方法があります。out
は非常に効率的ですが、あまり柔軟ではなく、多くの人が混乱していると感じています(実際、アンチパターンだと言う人もいます)。しかし、例えば:
DataTable Foo(out int val) {
...
val = something
return dataTable;
}
おそらくより便利なのは、2つの値をカプセル化する戻り型を宣言することです。
FooResult Foo() {
...
return new FooResult { Table = dataTable, Value = val };
}
ここFooResult
で、は2つのプロパティを持つクラスです。これには、APIを変更せずに、プロパティを簡単に追加できるという利点があります。
同様に、-を返すこともできますが、Tuple<DataTable,int>
各値が何を表すかについては何も表現していないため、これには反対することをお勧めします。でTuple<string,int,string>
、何Item1
ですか?どう違うのItem3
?
それは無意味なので、あなたの質問の「最も効率的な」部分を無視します。out
1つのパラメーターと戻り値を使用できます。
public DataTable GetData(out int integerVariable)
{
// ...
integerVariable = 4711;
return table;
}
DataTable
との両方を含むカスタムタイプを作成して返すこともできますint
。
関数は、2つのプロパティを公開するオブジェクトを返す必要があります。1つは整数で、もう1つはDataTableです。