When should I use out parameters?

后端 未结 10 1304
温柔的废话
温柔的废话 2020-12-08 06:34

I don\'t understand when an output parameter should be used, I personally wrap the result in a new type if I need to return more than one type, I find that a lot easier to w

10条回答
  •  温柔的废话
    2020-12-08 07:02

    Out is good when you have a TryNNN function and it's clear that the out-parameter will always be set even if the function does not succeed. This allows you rely on the fact that the local variable you declare will be set rather than having to place checks later in your code against null. (A comment below indicates that the parameter could be set to null, so you may want to verify the documentation for the function you're calling to be sure if this is the case or not.) It makes the code a little clearer and easier to read. Another case is when you need to return some data and a status on the condition of the method like:

    public bool DoSomething(int arg1, out string result);
    

    In this case the return can indicate if the function succeeded and the result is stored in the out parameter. Admittedly, this example is contrived because you can design a way where the function simply returns a string, but you get the idea.

    A disadvantage is that you have to declare a local variable to use them:

    string result;
    if (DoSomething(5, out result))
        UpdateWithResult(result);
    

    Instead of:

    UpdateWithResult(DoSomething(5));
    

    However, that may not even be a disadvantage, it depends on the design you're going for. In the case of DateTime, both means (Parse and TryParse) are provided.

提交回复
热议问题