我见过一些开发人员在void函数的参数列表中使用out
关键字。我不清楚以下代码的优缺点:
List<string> listOfResult;
public void public void (out listOfResult)
{
//bla bla
}
与
public List<string> c(out listOfResult)
{
List<string> list= new List<string>();
//bla bla
return list;
}
这两个代码段是否完全有效,或out
关键字是否有任何问题?
答案 0 :(得分:3)
out
关键字很方便。很好的例子是TryXXX
方法,它们返回操作状态而不是抛出异常:
public bool TryParse(string str, out int value);
但是我没有看到任何理由在void方法中使用单个out
参数......只需从方法中返回该值即可。它会更容易使用。比较:
List<string> list;
GetList(out list); // confusing method name
使用
List<string> list = GetList(); // nice name, one line of code
如果获取列表可能会抛出异常,那么您可以创建如下方法:
List<string> list;
if (TryGetList(out list)) // better than exception handling
{
// list was filled successfully
}
答案 1 :(得分:1)
out参数非常方便。
e.g。 返回是结果列表,但是当返回的列表为空时,您可以使用out参数返回错误消息。
答案 2 :(得分:1)
返回多个参数是一种很好的语法。我个人认为将方法的返回建模为“新对象/类”几乎总是更好。
那将是:
class CResult
{
List<string> firstResult;
List<string> secondResult;
}
public CResult c()
{
// do something
return new CResult() {firstResult = ..., secondResult = ... };
}
您可以看到与此方法相关的更多内容here。
答案 3 :(得分:0)
// out关键字用于函数而不是return。我们可以通过使用关键字来使用多个参数 public void outKeyword(out string Firstname,out string SecondName) { 名字=&#34;穆罕默德&#34 ;; SecondName =&#34; Ismail&#34 ;;
}
//点击按钮事件 protected void btnOutKeyword_Click(object sender,EventArgs e) { 字符串第一,第二; outKeyword(先出第二出); lblOutKeyword.Text = first +&#34; &#34; +秒; }