2014-12-03 78 views
-1

我写少的代码,我的问题是,我想这样做(我不是C#主^^):C#指向变量的指针 - 我可以避免它吗?

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

} 

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

+0

谢谢你,这就是我一直在寻找 – Makciek 2014-12-03 10:52:00

回答

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

您想要使用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一起传递的es需要初始化,而out不需要这个。你可能想阅读更多信息,相应的MSDN文章:

裁判 - http://msdn.microsoft.com/de-de/library/14akc2c7.aspx

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