gpt4 book ai didi

c# - 在方法中写入 "return"的完美方法是什么

转载 作者:太空狗 更新时间:2023-10-30 00:34:06 24 4
gpt4 key购买 nike

我不喜欢有多个返回行的方法。所以我创建了一个带有字符串结果的返回值 - 并且在每种情况下我都写 result = something ...

但是当我编写“try-catch”机制时,我必须设置公共(public)字符串结果。因为,如果我在 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?
}

最佳答案

你可以这样做:

public static string PingThatAddress(string hostAddress)
{
string result = string.Empty;
try
{
Ping ping = new Ping();
PingReply pingreply = ping.Send(hostAddress);

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";
}

}
catch (Exception pingError)
{
Debug.Fail(pingError.Message + " " + pingError);
}
return result;
}

然后确保 result 设置为在异常情况下有意义的值。

如果您想坚持 Resharper 警告您的内容,请按以下方式进行:

public static string PingThatAddress(string hostAddress)
{
try
{
Ping ping = new Ping();
PingReply pingreply = ping.Send(hostAddress);

string result = string.Empty;
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";
}
return result;

}
catch (Exception pingError)
{
Debug.Fail(pingError.Message + " " + pingError);
}
return string.Empty;
}

这里你不能两全其美:你的人为标准没有多个 return 语句可能是导致你在使用 Resharper 时遇到麻烦的原因。

关于c# - 在方法中写入 "return"的完美方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8873700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com