C#out参数vs返回

Fra*_*gio 9 c# return reference out

所以我是C#的新手,我很难理解out.而不是仅仅从函数返回一些东西

using System;
class ReturnTest
{
    static double CalculateArea()
    {
         double r=5;
         double area = r * r * Math.PI;
         return area;
    }

    static void Main()
    {
         double output = CalculateArea();
         Console.WriteLine("The area is {0:0.00}", output);
    } 
 }
Run Code Online (Sandbox Code Playgroud)

与此相比

 using System;
 class ReturnTest
 {
     static void CalculateArea(out double r)
     {
         r=5;
         r= r * r * Math.PI;
     }

     static void Main()
     {
         double radius;
         CalculateArea(out radius);
         Console.WriteLine("The area is {0:0.00}",radius );
         Console.ReadLine();
     }
}
Run Code Online (Sandbox Code Playgroud)

第一个是我一般会这样做的.我有可能想要使用out而不仅仅是返回语句吗?我理解ref允许2路通信,并且我通常不应该使用,ref除非函数正在对我发送它的变量做一些事情.

但是out和return语句之间有区别,如上所示?语法是否有理由支持其中一个?

Tud*_*dor 15

例如,您可以在某些API中看到的模式很好地用于out代替return结果.在此模式中,返回值用于表示操作的成功或失败(与异常相反),并且该参数用于返回实际结果.TryInt32.TryParse(...)out

Int32.Parse速度相关的优点之一是避免了异常.在另一个问题中提出了一些基准测试:解析性能(If,TryParse,Try-Catch)


Guf*_*ffa 9

out关键字主要用于当你想从一个方法返回多于一个值,而无需在包装的对象的值.

一个示例是该Int32.TryParse方法,它具有返回值(表示尝试成功的布尔值)和out在解析成功时获取值的参数.

该方法可以返回包含布尔值和整数的对象,但是需要在堆上创建对象,从而降低了方法的性能.