0

次のケースを処理するための推奨される方法は何ですか:

switch (numberOfActualBytes)
{
    case 1: return something1;
    case 2: return something2;
    case 3: return something3;
    case 4: return something4;
}

使用済みの契約numberOfActualBytesにより、範囲内であることは確かです。1-4

not all code paths return a valueエラーにならないコードはどう書けばいいですか?


この関数の最後または で例外をスローする必要があると思いますdefault switch caseが、おそらくもっと良い解決策があります。

4

3 に答える 3

8

defaultアプリケーションが 1..4 コントラクトを維持することが期待できる場合は、範囲外の例外をスローすることを好みます。この例外は、呼び出し元が適切なデータを提供してくれるという期待を反映しています。

ケースがすべてのコード パスdefaultを解決するわけではないことをコンパイラが判断できない場合は、. しかし、C# コンパイラはそれを正しく処理します。returnswitch

于 2011-11-24T04:01:33.077 に答える
0

私はおそらくこのようなことをするでしょう。

declare temp_something = a default value; //Used to check for error.

switch (numberOfActualBytes)
{
    case 1: temp_something = something1; break;
    case 2: temp_something = something2; break;
    case 3: temp_something = something3; break;
    case 4: temp_something = something4; break;
}
return temp_something;

これは同じことをしませんか?

于 2011-11-24T04:03:57.663 に答える
0

default: return error_code私の解決策になります。

于 2011-11-24T04:00:29.553 に答える