"var"変数を宣言する必要があるコードがあります。この宣言は、すべての例外をキャッチするtryブロック内で行わなければなりません:範囲外のtry catchブロックを終了するので暗黙的に型付けされたローカル変数を初期化する必要があります:スコープ定義
try
{
var calc = (Type1)obj;
var results = calc.Function();
}
catch
{
var calc = (Type2)obj;
var results = calc.Function();
}
finally
{
return results;
}
今の問題は、「結果が」動作しませんされています。型キャストをチェックし、それに応じて型を変更する必要があるので、私はvarをtry以外の方法で宣言することはできません。
タイプ1、タイプ2は異なるインターフェースであり、objは異なるタイプを持つことができる「var」です。
varの外側のtryブロックをnullとして開始することさえできません。どうすればこの問題を解決できますか? objが例外を回避するためにキャストを試みる前に、タイプのType1であるかどうかをチェックする必要があり
var results = //determine the result type here
try
{
var calc = (Type1)obj;
return calc.Function();
}
catch
{
var calc = (Type2)obj;
return calc.Function();
}
も
:
あなたがnull'なので、 ''としてvar'を初期化した場合あなたはそれを期待していますか? 'var'は' object'や 'dynamic'と同じではありません。あなたは実際に 'var'のドキュメントを読むべきです、あなたはそれをはるかに理解していません。 –
私はnullとして初期化するつもりはないと知っています。それは私の主な関心事ではありません。私が探しているのは、データセット、またはtryブロックの実行の有無、またはcatchブロックの実行の有無に基づいたデータテーブルのいずれかになる、「結果」を返すことだけです。 – user5820237
'var'はあなたのコードを難読化でき、悪用しないでください。型を記述すると、コードをもっと読みやすく分かりやすくすることができます。戻り型のメソッドを使用すれば、さらに多くのことができます。 –