C#指向变量的指针 - 我可以避免吗?

时间:2014-12-03 10:47:56

标签: c#

我写的是很少的代码,我的问题是我想做一些事情(我不是C#master ^^):

private void pierwiastek(double* c, double* d)
{

}

但它似乎不起作用,因为不安全,我不想使用所有不安全/固定的东西,这种效果是否可以通过其他方式达到(我的意思是变量不会被复制和功能将在源变量上工作)?

2 个答案:

答案 0 :(得分:4)

您可能正在寻找refout个参数:

private void square(double input, out double output)
{
    output = input * input;
}

对于refout参数,对参数进行的修改是对调用者提供的变量进行的。这是传递引用而不是默认的传递值

像这样调用函数:

double d;
square(3.0, out d);
Debug.Assert(d == 9.0);

使用out参数,信息从函数流向调用者。 ref参数允许数据既传递到函数中,也传递到函数中。

MSDN上记录了这些语言功能:refout。毫无疑问,你的教科书将涵盖这一主题。

答案 1 :(得分:1)

您想要使用ref或out参数。

private void pierwiastek(ref double c, ref double d)
{
   //some code
}

private void pierwiastek(out double c, out double d)
{
   //some code
}

您必须使用ref或out关键字调用该方法:

pierwiastek(ref x, ref y);

pierwiastek(out x, out y);

这两个关键字之间的主要区别在于,使用ref传递的变量需要初始化,而out不需要这样。您可能需要阅读相应的msdn文章以获取更多信息:

参考 - http://msdn.microsoft.com/de-de/library/14akc2c7.aspx

out - http://msdn.microsoft.com/de-de/library/t3c3bfhx.aspx