所以,我最近在C#中搜索使用一个小型的FTP库...我通过this问题到了this班......
我想知道他们所有虚空方法中return
语句的意义......
这是他们的删除方法:
/* Delete File */
public void delete(string deleteFile)
{
try
{
/* Create an FTP Request */
ftpRequest = (FtpWebRequest)WebRequest.Create(host + "/" + deleteFile);
/* Log in to the FTP Server with the User Name and Password Provided */
ftpRequest.Credentials = new NetworkCredential(user, pass);
/* When in doubt, use these options */
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = true;
/* Specify the Type of FTP Request */
ftpRequest.Method = WebRequestMethods.Ftp.DeleteFile;
/* Establish Return Communication with the FTP Server */
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
/* Resource Cleanup */
ftpResponse.Close();
ftpRequest = null;
}
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
return;
}
我的问题是:
有return;
任何理由或效果吗?
答案 0 :(得分:2)
从查看页面开始,每个方法都以模式结束
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
return /* Whatever the "default" return value would be on a error */;
在void方法中使用return
作为最后一个语句对程序没有任何作用,我唯一的猜测是文章的海报喜欢遵循的模式。他有其他方法返回一个字符串......
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
return "";
所以他可能只想在返回void的方法上保持相同的模式。
答案 1 :(得分:1)
没有
这可以用于方法的早期返回,但这不是这种情况 - 方法结束时的return;
完全是多余的。
只要您已禁用优化,生成的IL代码就会有明显的差异。没有return
语句的void方法将只包含ret
指令,而在末尾添加return;
将添加分支指令 - 跳转到ret
指令。
答案 2 :(得分:1)
不需要写无意义的解释,答案很简单:它没有任何意义
答案 3 :(得分:1)
它没有效果,但我也见过它。我推测(!)有些人喜欢用return
结束他们的方法,在块的末尾有一个比闭括号更大的视觉指示。如果您在稍后阶段(从void到其他地方)更改返回类型,它也可能会为您节省一小段时间。
答案 4 :(得分:1)
您的代码存在一些问题:
public static async Task<CreateProfileStruct> CreateProfile(string name, string phone, string email, string series, string location)
{
Profile profile = new Profile(name, phone, email, series, location);
CreateProfileStruct result = new CreateProfileStruct();
string validation = profile.validate();
// profile information is acceptable...
if (validation.Equals(""))
{
Console.WriteLine("creating profile");
try
{
await profile.SaveAsync();
}
catch (ParseException e)
{
// set enum to error
result.enumValue = CreateProfileEnum.Error;
// determine the error message
if (e.Code == ParseException.ErrorCode.ConnectionFailed)
result.message = parseNoConnection;
else
result.message = profileCreationFailed;
// return
return result;
}
result.enumValue = CreateProfileEnum.Success;
result.message = profileCreated;
// change ParseUser["hasProfile"] to true
ParseUser user = ParseUser.CurrentUser;
user["hasProfile"] = true;
user.SaveAsync();
return result;
}
// profile info is not acceptable
else
{
result.enumValue = CreateProfileEnum.Error;
result.message = validation;
return result;
}
}
public enum CreateProfileEnum
{
Success,
Error
}
public struct CreateProfileStruct
{
public CreateProfileEnum enumValue;
public string message;
}
t将不会关闭(资源泄漏)ftpReques
)吗? ftpRequest
气味Exception
无用(您的问题)重新编写的代码可能是这样的:
return
答案 5 :(得分:0)
return
方法末尾的void
语句不会产生任何其他影响。可以在不改变方法语义的情况下删除它。
可以使用此return
来简化对函数返回的位置的文本搜索,但它对编译器没有影响。