2015-04-17 51 views
-3

我想从这些循环的保存数据,所以我想知道我怎么能做到这一点:如何将一些数组的数据保存到一个数组中?

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但它只是给我的数据只有最后一个循环。

+3

你可以修复你的问题的格式吗也有你使用调试器精确定位哪一行失败,或者在你的代码中你看到意想不到的结果。 – MethodMan

+0

@MethodMan,除非他添加一些文本编辑将是困难的 - _-太多的代码,不够解释(编辑器错误) – Sidewinder94

+0

_ [我如何问一个好问题?](http://stackoverflow.com/help/怎么问)_ – MickyD

回答

1

这是不是很清楚你想要做什么。但是,如果你的意思是,从你的方法返回一个包含一个数组(Bitmap[]),分配给每个循环变量n每个Bitmap情况下,一般的做法是:


创建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(); 
} 

请注意,您的原始代码还有许多其他无关位,主要是为了分配立即丢弃的新对象。所以上面有一些变化反映了清除这些错误。在上面的代码和整个程序中可能还有更多的逻辑错误,但我忽略了这里的可能性,只处理那些看起来明显是的错误。

+0

非常感谢你工作正常,我试图做的是用我用C#图形绘制的卡片填充卡组。我会尽量减少我制作的卡片物品。再次感谢@PeterDuniho –

相关问题