gpt4 book ai didi

c# - 在 C# 中使用双引用

转载 作者:行者123 更新时间:2023-12-02 17:47:17 27 4
gpt4 key购买 nike

假设我有一个监视 double 值的类。我不想每次在监控类中调用 monitor 方法时都传递那个 double 值。因此,我想在构造函数中传递对 double 的引用,并存储它,这样我就可以直接在 monitor 方法中比较值。

我的尝试是:

class Monitor {
double v;
public Monitor(ref double x) { v = x; }
public watch() { Console.WriteLine("Value is: " + v); }
}

并将其用于:

double d = 10;
Monitor m = new Monitor(ref d);
while (d > 0) {
m.watch();
d--;
}

不幸的是,这不起作用,因为 Monitor 构造函数中的赋值将值存储在 v 变量中。我尝试将变量声明为 ref double v 但 ref 只能在方法参数中使用。

在这个提议附近是否有任何解决方案不包括装箱/拆箱或在每次调用 watch 时传递 d 值?

谢谢

注意:我想用这个的具体情况与上面的代码无关。这只是一种轻松展示我想要实现的目标的方式。

最佳答案

简短的回答是您不能存储对 double (或与此相关的任何其他值类型)的引用。引用只能传递给方法(不能在调用之间存储)。

长答案是,您可以将它包装在这样的类中并传递该类:

class DoubleWrap
{
protected double val;

public DoubleWrap(double _val) { val = _val; }
public double Value { get { return val } set { val = value; } }
}

那么当你使用它的时候:

class Monitor {
DoubleWrap v;
public Monitor(DoubleWrap x) { v = x; }
public watch() { Console.WriteLine("Value is: " + v.Value); }
}

关于c# - 在 C# 中使用双引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13221936/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com