何时在参数上使用C#out关键字

时间:2012-07-16 00:20:10

标签: c#-4.0

我见过一些开发人员在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关键字是否有任何问题?

4 个答案:

答案 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; +秒;         }