【发布时间】:2010-12-27 23:17:05
【问题描述】:
例如,我可以返回对双精度值的引用吗?
这就是我想做的:
ref double GetElement()
{
......
// Calculate x,y,z
return ref doubleArray[x,y,z];
}
像这样使用它
void func()
{
GetElement()=5.0;
}
这就像在 C++ 中返回一个双指针...... 我知道我写它的方式是错误的..但是有没有正确的方法呢?
【问题讨论】:
-
你想将元素分配给数组还是获取它的值?你想要一个读东西或写东西的函数吗?
-
这不是重点。在 C++(不是 C++/CLI)中,没有值/引用类型的概念。您可以完美地引用双精度(当然不是 .NET 意义上的引用):
int x = 42; int& y = x;。无论如何,恐怕这对 OP 不是很有帮助;) -
@John Saunders:不,它不是的意思是“试图返回对值类型的实例的引用”。这意味着尝试返回对值类型变量的引用,这在 CLR 类型系统中是完全合理和合法的。一个变量有一个位置、一个类型和一个生命周期;只要已知生命周期不短于引用的生命周期,对这样的变量进行引用是合法的。 (在 CLR 类型系统中,而不是在 C# 中。)记住 数组元素是变量,而不是值。
-
如果您对此感兴趣:我认为(尽管我必须检查)公共语言运行时(使用托管引用)允许这样做,但 C# 不支持它.
-
我是唯一一个认为 OP 提供的示例是代码异味的人吗?分配给获得某些东西的方法对我来说似乎很奇怪。或者就此而言,将某些东西分配给一个方法......
标签: c# reference return-value