5

オブジェクトを返すメソッドがあり、outパラメーターもあります。このメソッドは、別の出力パラメーターと同じ出力パラメーターを取り込む別のメソッドを呼び出します。これにより、returnステートメントでビルドエラーが発生します。

制御が現在のメソッドを離れる前に、出力パラメータ「param1」を割り当てる必要があります

コードは次のようになります。

public TypeA Method1(TypeA param1, out bool param2)
{
  /... some logic here .../
  SubMethod(out param2);
  /... some logic here .../
  return param1;
}

param2は、Method1()ではなくSubMethod()で操作されます。他にやらなければならないことはありますか?

4

3 に答える 3

3

この場合、「デフォルト」値を割り当てます。bool、int、myFooなどに関係なく-デフォルト値を設定します。

public TypeA Method1(TypeB param1, out bool param2)
{
  param2 = false;   // default value;
  // or
  param2 = default(bool); // in cases where you are not sure what the default is

  /... some logic here .../
  SubMethod(out param2);
  /... some logic here .../
  return param1; // UPDATE: <- this is where you are receiving the exception
}

ただし、この例でparam1に明らかに障害がない場合に、例外が「param1」を参照する理由を特定する必要があります(明確にするために仮定しTypeB : TypeA、適切に制約されています)。

のパラメータparam2として渡すと、を割り当てる義務がなくなると思います。ただし、には何も割り当てていません。ここで説明されていないことがもっと起こっていますか?outSubMethod(...)param2param1

于 2012-06-05T21:19:29.580 に答える
1

falseの先頭に設定できますMethod1

于 2012-06-05T21:17:21.373 に答える
0

SubMethodのoutパラメータをreturnタイプに移動することをお勧めします。

public TypeA Method1(TypeB param1, out bool param2)
{
  /... some logic here .../
  param2 = SubMethod(param2);
  /... some logic here .../
  return param1;
}
于 2012-06-05T21:18:54.573 に答える