【发布时间】:2012-01-15 21:56:30
【问题描述】:
我不喜欢方法有多个返回行。所以我用字符串结果创建了一个返回值 - 在每种情况下我都会写 result = something...
但是当我写“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?
}
【问题讨论】:
-
“我不喜欢方法有几个返回行” - 为什么?这是简化方法的最佳方式之一。
-
您期待哪些异常,为什么还要捕获并处理其他异常?
-
如果您对使用多个返回语句有疑问,请查看stackoverflow votes on this matter
-
@Oded 我也不喜欢方法中的多个返回。退货只不过是隐藏在漂亮布中的“goto”。
标签: c# coding-style resharper