-1

メソッドから2つの変数を返す最も簡単な方法は何ですか?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;
}

おそらくより便利なのは、2つの値をカプセル化する戻り型を宣言することです。

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

ここFooResultで、は2つのプロパティを持つクラスです。これには、APIを変更せずに、プロパティを簡単に追加できるという利点があります。

同様に、-を返すこともできますが、Tuple<DataTable,int>各値が何を表すかについては何も表現していないため、これには反対することをお勧めします。でTuple<string,int,string>、何Item1ですか?どう違うのItem3

于 2013-03-13T12:08:00.993 に答える
1

それは無意味なので、あなたの質問の「最も効率的な」部分を無視します。out1つのパラメーター戻り値を使用できます。

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

DataTableとの両方を含むカスタムタイプを作成して返すこともできますint

于 2013-03-13T12:09:42.173 に答える
0

関数は、2つのプロパティを公開するオブジェクトを返す必要があります。1つは整数で、もう1つはDataTableです。

于 2013-03-13T12:10:20.120 に答える