所以我是C#的新手,我很难理解.而不是从函数返回一些东西
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); } }
与此相比
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(); } }
第一个是我一般来做的.有没有理由为什么我可能想使用而不是只是一个return语句?我明白ref允许进行双向通信,而且我通常不要使用ref,除非该函数正在使用我发送的变量做某事.
然而,out和return语句之间有区别,如上所示?语法上有理由赞成一个或另一个?
解决方法
对于结果而言,使用out而不是返回的好方法是可以在某些API中看到的Try模式,例如Int32.TryParse(…).在这种模式下,返回值用于表示操作的成功或失败(与异常相反),out参数用于返回实际结果.
Int32.Parse的优点之一是速度快,因为避免了异常.另一个问题已经提出了一些基准:Parsing Performance (If,TryParse,Try-Catch)