【问题标题】:C# how to pass queue parameters as values instead of the default referenceC#如何将队列参数作为值而不是默认引用传递
【发布时间】:2020-02-04 12:09:05
【问题描述】:

我有一个接受队列参数作为引用的类。我不想更改发送队列,所以使用值而不是引用。

    public static Deque<DateClose> SMAMethod (Queue<DateClose> queue, int period)
    {
        _queue = queue;
        _period = period;

        decimal average, sum=0;
        Deque<DateClose> sample = new Deque<DateClose>(_period);
        DateClose dateClose = null;
        for (int i = 0; i < _period; i++)
        {
            dateClose = _queue.Dequeue();

            if (dateClose != null)
            {
                sum += dateClose.ClosingPrice;
                sample.AddToBack(dateClose);
            }
        }
        average = sum/_period;
        DateClose dc = new DateClose { Time = dateClose.Time, ClosingPrice = average };

        sample.AddToBack(dc);
        return sample;
    }

这是调用代码:

// send the movingAverageQueue along with the MAperiod to caluclate a SMA queue
var simpleMovingAverage = SMA.SMAMethod(movingAverageQueue, MAperiod);

【问题讨论】:

    标签: c#


    【解决方案1】:

    也许您应该使用浅克隆 (queue supports it)

    public static Deque<DateClose> SMAMethod (Queue<DateClose> queue, int period)
    {
        _queue = queue.Clone();
        //....
    

    【讨论】:

    猜你喜欢
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多