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

本文关键字:可以避免 指针 变量 | 更新日期: 2023-09-27 18:32:52

我正在编写少量代码,我的问题是我想做类似的事情(我不是 C# 大师^^):

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

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

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

您可能正在寻找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 。毫无疑问,您的教科书将涵盖这个主题。

你想使用 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