Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每次创建对象时创建新队列_C#_Class_Object_Queue - Fatal编程技术网

C# 每次创建对象时创建新队列

C# 每次创建对象时创建新队列,c#,class,object,queue,C#,Class,Object,Queue,我创建了一个简单的类来从数据流中过滤数据。问题是,如果我使用多个ValueFilter对象,它们都使用相同的队列。我希望每个ValueFilter对象都有一个单独的队列。我在我的主程序中声明ValueFilter,如下所示:ValueFilter filter=newvaluefilter()我应该使用某种构造函数吗 using System; using Microsoft.SPOT; using System.Collections; namespace foo { class Va

我创建了一个简单的类来从数据流中过滤数据。问题是,如果我使用多个ValueFilter对象,它们都使用相同的队列。我希望每个ValueFilter对象都有一个单独的队列。我在我的主程序中声明ValueFilter,如下所示:
ValueFilter filter=newvaluefilter()我应该使用某种构造函数吗

using System;
using Microsoft.SPOT;
using System.Collections;
namespace foo
{
    class ValueFilter
    {
        private const int FILTER_QUEUE_SIZE = 10;
        private static int sum = 0;
        private static Queue queue = new Queue();

        public int FilterValue(int value)
        {
            if (queue.Count >= FILTER_QUEUE_SIZE)
            {

                if (System.Math.Abs((int)(value - sum/queue.Count)) < 3000)
                {
                    queue.Enqueue(value);
                    sum += (int)(value - (int)queue.Dequeue());                  
                }
            }
            else
            {
                queue.Enqueue(value);
                sum += (int)value;
            }

            return sum / queue.Count;
        }
}
使用系统;
使用Microsoft.SPOT;
使用系统集合;
名称空间foo
{
类值过滤器
{
private const int FILTER_QUEUE_SIZE=10;
私有静态整数和=0;
私有静态队列=新队列();
公共整型过滤器值(整型值)
{
如果(queue.Count>=过滤器\队列\大小)
{
if(System.Math.Abs((int)(value-sum/queue.Count))<3000)
{
queue.Enqueue(值);
sum+=(int)(值-(int)queue.Dequeue());
}
}
其他的
{
queue.Enqueue(值);
总和+=(int)值;
}
返回sum/queue.Count;
}
}

由于队列似乎是私有的,所以只需删除
静态
修饰符:

//private static int sum = 0;
//private static Queue queue = new Queue();
private int sum = 0;
private Queue queue = new Queue();

现在,每个ValueFilter实例都有自己的
sum
queue
实例。非静态成员是实例成员。

因为队列似乎是私有的,所以您只需删除
static
修饰符:

//private static int sum = 0;
//private static Queue queue = new Queue();
private int sum = 0;
private Queue queue = new Queue();

现在,每个ValueFilter实例都有自己的
sum
queue
实例。非静态成员是实例成员。

您将队列变量声明为
static
。如果希望每个FilterValue都有一个队列,请不要使用静态队列,而是使用实例变量。

您将队列变量声明为s
static
。如果希望每个FilterValue有一个队列,请不要使用静态队列,而是为其使用实例变量。

您将“队列”声明为静态,因此它存在于类ValueFilter本身中,而不存在于ValueFilter的实例中。

您声明了“队列”作为静态的,因此它存在于类ValueFilter本身中,而不是ValueFilter实例中