私はメソッドにいくつかの戻り行があるのが好きではありません。だから私は、文字列の結果を戻り値を作成した - とすべての条件に私は結果を書き=何か...メソッドに "return"を書くのに最適な方法は何ですか?
しかし、私は「のtry-catchを」メカニズムを書くとき、私は公共の文字列の結果を設定する必要があります。なぜなら、私がtryで結果を返すと、コンパイラはエラーを出し、すべてのコードが戻り値を持っているとは限りません。もし私がresult = string.Emptyと書くと、メソッドの終わりに達すると、resharperは到達可能なコードではないと言います。ここでは例を挙げて、私の質問です。
"メソッドに" return "を書くにはどうすればよいですか?"
public static string PingThatAddress(string hostAddress)
{
try
{
Ping ping = new Ping();
PingReply pingreply = ping.Send(hostAddress);
string result;
if (pingreply != null && pingreply.Status.ToString() != "TimedOut")
{
result = "Address: " + pingreply.Address + "\r"
+ "Roundtrip Time: " + pingreply.RoundtripTime + "\r"
+ "TTL (Time To Live): " + pingreply.Options.Ttl + "\r"
+ "Buffer Size: " + pingreply.Buffer.Length + "\r";
}
else
{
result = string.Empty;
}
return result;
}
catch (Exception pingError)
{
Debug.Fail(pingError.Message + " " + pingError);
}
//compiler error: THERE IS NO RETURN VALUE here?
}
"メソッドにはいくつかのリターンラインがあるのが好きではありません" - なぜですか?メソッドを単純化するための最良の方法の1つです。 – Oded
あなたはどの例外を予期していますか?また、*その他の例外も同様に扱いますか? – hvd
複数のreturn文を使用することに疑問がある場合は、[この問題についてのstackoverflow投票]を見てください(http://stackoverflow.com/questions/36707/should-a-function-have-only-one-return -statement) –