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

Posted

技术标签:

【中文标题】指向变量的 C# 指针 - 我可以避免吗? [复制]【英文标题】:C# pointer to the variable - can I avoid it? [duplicate] 【发布时间】:2015-01-31 21:31:23 【问题描述】:

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

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



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

【问题讨论】:

非常感谢,这就是我要找的东西 【参考方案1】:

您大概是在寻找refout 参数:

private void square(double input, out double output)

    output = input * input;

对于refout 参数,对参数所做的修改是对调用者提供的变量进行的。这是pass-by-reference,而不是默认的pass-by-value

这样调用函数:

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

使用out 参数,信息从函数流向调用者。 ref 参数允许将数据传入和传出函数。

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于指向变量的 C# 指针 - 我可以避免吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

数组变量是指向数组第一个元素的指针吗? [复制]

编译器可以通过指向易失性的指针优化存储吗? [复制]

如果继承类型受到保护,我可以使基类的指针指向派生对象吗? [复制]

C\C++指针变量怎么赋值给普通变量。

Golang Slice 总结

c#拷贝数组指针中的元素到变量中