指向变量的 C# 指针 - 我可以避免它吗?
本文关键字:可以避免 指针 变量 | 更新日期: 2023-09-27 18:32:52
我正在编写少量代码,我的问题是我想做类似的事情(我不是 C# 大师^^):
private void pierwiastek(double* c, double* d)
{
}
但它似乎不起作用,因为不安全并且我不想使用所有这些不安全/固定的东西,可以通过其他方式达到这种效果吗(我的意思是变量不会被复制并且函数将在源变量上工作)?
您可能正在寻找ref
或out
参数:
private void square(double input, out double output)
{
output = input * input;
}
对于ref
或out
参数,对参数所做的修改是对调用方提供的变量进行的。这是按引用传递,而不是默认的按值传递。
像这样调用函数:
double d;
square(3.0, out d);
Debug.Assert(d == 9.0);
使用 out
参数,信息从函数流向调用方。ref
参数允许将数据传入函数和传出函数。
MSDN 上记录了这些语言功能:ref
和 out
。毫无疑问,您的教科书将涵盖这个主题。
你想使用 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
出 - http://msdn.microsoft.com/de-de/library/t3c3bfhx.aspx