2016-04-05 11 views
3

私はオブジェクトを返すC#のメソッドを持っています!私は、これはreturnオブジェクトを持つメソッドのtry-catch T

public T FromBinary() 
{ 
    T obj; 
    try 
    { 
     using (Stream stream = File.Open(this.serializeFilePath, FileMode.Open)) 
     { 
      var binaryFormatter = new BinaryFormatter(); 
      obj=(T)binaryFormatter.Deserialize(stream); 
     } 
    } 
    catch (Exception e) 
    { 
     EventLog.WriteEntry("Cannot convert Binary to object", e.Message + "Trace" + e.StackTrace); 
    } 
    return obj; 
} 

私の方法ですが、私はエラーに割り当てられていないローカル変数 'objのの

使用を取得していますここ

をトライキャッチを使用する必要があります。

戻りオブジェクトTを持つメソッドでtry catchを使用するにはどうすればよいですか?

+1

最初に 'T obj = null;'のようにobjにnullを割り当てることができます。 – yogi

+0

@yogi .. Soryy geting error 'ヌル値を持たない値型である可能性があるため、nullを型パラメータ 'T'に変換できません。 'default(T)'を使うことを考えてください。 –

答えて

6

変更それがで変数を割り当てるためにT obj = default(T);を記述する必要があります。

4

あなたは初期値T obj = default(T);

0

エラーが発生するのは、コードに例外がスローされた場合に値が割り当てられる前に、メソッドがオブジェクトを返すようにするためです。

ソリューションにあなたの宣言を設定することです:あなたはオールウェイズオブジェクトを返すと、このようにファイルストリームを閉じるように、あなたはまた、最終的にはのtry-catchするべき

T obj = Default(T); 

}//end of catch block 
finnally{ 
stream.Close(); 
return obj; 
} 
}//end of method 
関連する問題