4

我见过一些开发人员out在 void 函数的参数列表中使用关键字。我不清楚以下代码的优缺点:

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这两个代码片段是否完全有效,或者关键字周围有什么问题?

4

4 回答 4

3

out当您需要从函数返回多个值时,关键字很方便。很好的例子是TryXXX方法,它返回操作状态而不是抛出异常:

public bool TryParse(string str, out int value);

但我看不出有任何理由将单个out参数与 void 方法一起使用......只需从您的方法中返回该值。它会更容易使用。比较:

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
}
于 2012-07-16T00:24:40.837 回答
1

当您需要从函数返回多个值时,out 参数非常方便。

例如,Return 是一个结果列表,但是当返回的列表为空时,您可以使用 out 参数返回错误消息。

于 2012-07-16T00:22:28.137 回答
1

返回多个参数是一种很好的语法。我个人认为将方法的返回建模为“新对象/类”几乎总是更好。

那将是:

class CResult
{
    List<string> firstResult;
    List<string> secondResult;
}

public CResult c()
{
    // do something
    return new CResult() {firstResult = ..., secondResult = ... };
}

您可以在此处查看与此方法相关的更多内容。

于 2012-07-16T00:42:26.093 回答
0

//out关键字在函数中使用而不是return。我们可以通过使用 out 关键字来使用多个参数 public void outKeyword(out string Firstname, out string SecondName) { Firstname = "Muhammad"; SecondName = "伊斯梅尔";

    }

//按钮单击事件受保护 void btnOutKeyword_Click(object sender, EventArgs e) { string first, second; outKeyword(先出,后出); lblOutKeyword.Text = 第一个 + " " + 第二个;}

于 2014-08-28T08:07:28.557 回答