如何将来自多个阵列的数据保存到一个阵列中?

时间:2015-04-17 22:29:10

标签: c# arrays

我想要保存所有这些循环中的数据,所以我想知道如何做到这一点:

    public Bitmap[] fill(Bitmap[] cr)
    {
        Card a = new Card();
        Card b = new Card(); 
        Card c= new Card();
        Card d = new Card();

        Bitmap n = new Bitmap(100, 142);          
        cr = new Bitmap[10];

        for (int i = 0; i < 10; i++)
        {

            d.Num++;
            d.Color1 = new SolidBrush(Color.Blue);
            d.Color2 = new SolidBrush(Color.White);
            d = new Card(d.Color1, d.Color2, d.Num);
            d.DrawCard();
            n = d.DrawCard();
            cr[i] = n;

        }

        for (int i = 0; i < 10; i++)
        {

            a.Num++;
            d.Color1 = new SolidBrush(Color.Yellow);
            d.Color2 = new SolidBrush(Color.White);

          d = new Card(d.Color1, d.Color2, a.Num);
            d.DrawCard();
            n = d.DrawCard();
            cr[i] = n;

        }

        for (int i = 0; i < 10; i++)
        {

            b.Num++;

            d.Color1 = new SolidBrush(Color.Red);
            d.Color2 = new SolidBrush(Color.White);
            d = new Card(d.Color1, d.Color2, b.Num);
            d.DrawCard();
            n = d.DrawCard();
            cr[i] = n;
        }

        for (int i = 0; i < 10; i++)
        {

            c.Num++;
            d.Color1 = new SolidBrush(Color.Green); 
            d.Color2 = new SolidBrush(Color.White);
            d = new Card(d.Color1, d.Color2, c.Num);
            d.DrawCard();
            n = d.DrawCard();
            cr[i] = n;

        }

        // _deck = new Card[n];
        test.Add(cr);
        return cr;
    }

我尝试使用ArrayList,但它只为我提供了最后一个循环的数据。

1 个答案:

答案 0 :(得分:1)

你要做的事情并不是很清楚。但是,如果您的意思是从您的方法返回一个包含在其中的数组(Bitmap[]),每个循环中分配给变量Bitmap的每个n实例,一般方法将是:


创建可以添加对象的List<Bitmap>

List<Bitmap> cr = new List<Bitmap>();

然后在每个循环结束时,将cr[i] = n;对象添加到列表中,而不是Bitmap

cr.Add(n);

最后,在方法结束时,将列表中的元素复制到数组中:

return cr.ToArray();


整个事情看起来像这样:

public Bitmap[] fill()
{
    List<Bitmap> cr = new List<Bitmap>();
    Card a = new Card();
    Card b = new Card(); 
    Card c= new Card();
    Card d = new Card();

    Bitmap n;

    for (int i = 0; i < 10; i++)
    {

        d.Num++;
        d.Color1 = new SolidBrush(Color.Blue);
        d.Color2 = new SolidBrush(Color.White);
        d = new Card(d.Color1, d.Color2, d.Num);
        n = d.DrawCard();
        cr.Add(n);
    }

    for (int i = 0; i < 10; i++)
    {
        a.Num++;
        d.Color1 = new SolidBrush(Color.Yellow);
        d.Color2 = new SolidBrush(Color.White);

        d = new Card(d.Color1, d.Color2, a.Num);
        n = d.DrawCard();
        cr.Add(n);
    }

    for (int i = 0; i < 10; i++)
    {
        b.Num++;

        d.Color1 = new SolidBrush(Color.Red);
        d.Color2 = new SolidBrush(Color.White);
        d = new Card(d.Color1, d.Color2, b.Num);
        n = d.DrawCard();
        cr.Add(n);
    }

    for (int i = 0; i < 10; i++)
    {
        c.Num++;
        d.Color1 = new SolidBrush(Color.Green); 
        d.Color2 = new SolidBrush(Color.White);
        d = new Card(d.Color1, d.Color2, c.Num);
        n = d.DrawCard();
        cr.Add(n);
    }

    return cr.ToArray();
}

请注意,您的原始代码有许多其他无关位,主要与分配被及时丢弃的新对象有关。所以上面有一些变化反映了清理这些错误。上面的代码以及程序整体上可能存在更多的逻辑错误,但我忽略了这些可能性,只解决那些似乎明显错误的事情。