我想要保存所有这些循环中的数据,所以我想知道如何做到这一点:
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
,但它只为我提供了最后一个循环的数据。
答案 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();
}
请注意,您的原始代码有许多其他无关位,主要与分配被及时丢弃的新对象有关。所以上面有一些变化反映了清理这些错误。上面的代码以及程序整体上可能存在更多的逻辑错误,但我忽略了这些可能性,只解决那些似乎明显错误的事情。