【发布时间】:2012-06-28 02:11:19
【问题描述】:
所以我是 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);
}
}
对比一下
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();
}
}
第一个是我通常会怎么做。我是否有理由想使用out 而不仅仅是返回语句?我了解ref 允许双向通信,并且我通常不应该使用ref,除非该函数正在对我发送的变量执行某些操作。
但是,out 和 return 语句之间有区别吗,如上所示?在语法方面是否有理由偏爱其中一个?
【问题讨论】:
-
研究
Dictionary.TryGetValue和int.TryParse,看看这些例子是否能解释out的实用性。 -
out主要用于需要从方法返回多个不相关的值时。同样,它通常用于在通过 COM 或 p/invoke 与本机代码互操作时模拟指针。 -
请记住,在 C/C++ 中我们有指针。当您将指针传递给函数时,您可以在函数内对其进行修改,并且调用函数中的值也会发生变化。 out 做几乎相同的事情。
-
@carny666:我认为
ref比out更类似于C++ 引用。 -
@KirkWoll 这是两个很好的例子,谢谢!