指向变量的 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】:您大概是在寻找ref
或out
参数:
private void square(double input, out double output)
output = input * input;
对于ref
或out
参数,对参数所做的修改是对调用者提供的变量进行的。这是pass-by-reference,而不是默认的pass-by-value。
这样调用函数:
double d;
square(3.0, out d);
Debug.Assert(d == 9.0);
使用out
参数,信息从函数流向调用者。 ref
参数允许将数据传入和传出函数。
MSDN 上记录了这些语言功能:ref
和 out
。毫无疑问,您的教科书将涵盖这个主题。
【讨论】:
【参考方案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# 指针 - 我可以避免吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章